python读取excel文件画气泡图,并当鼠标放上去时可显示对应标注位置
时间: 2023-06-06 12:06:49 浏览: 101
可以使用Pandas和Matplotlib库来实现这个功能。首先,使用Pandas库中的read_excel函数读取Excel文件数据,然后使用Matplotlib库中的scatter函数画气泡图,最后使用Matplotlib库中的annotate函数添加标注。
以下是参考代码:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取Excel文件数据
df = pd.read_excel('data.xlsx')
# 画气泡图
fig, ax = plt.subplots()
scatter = ax.scatter(df['x'], df['y'], s=df['size'], c=df['color'], alpha=0.5)
# 添加标注
annot = ax.annotate("", xy=(0,0), xytext=(20,20),
textcoords="offset points",
bbox=dict(boxstyle="round", fc="w"),
arrowprops=dict(arrowstyle="->"))
annot.set_visible(False)
def update_annot(ind):
pos = scatter.get_offsets()[ind["ind"][0]]
annot.xy = pos
text = "{}\n{}".format(" ".join(list(map(str, ind["ind"]))),
" ".join([df['label'][n] for n in ind["ind"]]))
annot.set_text(text)
def hover(event):
vis = annot.get_visible()
if event.inaxes == ax:
cont, ind = scatter.contains(event)
if cont:
update_annot(ind)
annot.set_visible(True)
fig.canvas.draw_idle()
else:
if vis:
annot.set_visible(False)
fig.canvas.draw_idle()
# 鼠标悬停时显示标注
fig.canvas.mpl_connect("motion_notify_event", hover)
plt.show()
```
其中,data.xlsx文件中包含四列数据:x、y、size、color、label,分别表示气泡的横坐标、纵坐标、大小、颜色和标注。运行程序后,将会弹出气泡图窗口,当鼠标放在气泡上时,会显示对应的标注信息。
阅读全文