如何在此程序中显示包含每个点的特定信息的工具提示?我在这个论坛上找到了这样做的例子,但对于这个例子来说,使用在“for boucle”中创建的 plt.scatter 并不容易重现
它应该为每个点返回不同的信息(例如,此处为 1 到 50 之间的数字),但如何获取鼠标悬停处的值?这里只有最后一个点在鼠标悬停时获得了工具提示
import matplotlib.pyplot as plt
fig,ax=plt.subplots()
for i in range(0,50):scatter=ax.scatter(i+1,i+1)
annot=ax.annotate("",xy=(0,0),xytext=(10,10),textcoords="offset points",bbox=dict(boxstyle="round",fc="white"))
annot.set_visible(False)
def update_annot(ind):
pos = scatter.get_offsets()[ind["ind"][0]]
annot.xy = pos
text = "TEST"
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()
‘
mplcursors库在更高层次上封装了这种功能。
如果
x
和y
在列表(或 numpy 数组)中,那么最简单的方法就是一次性绘制散点图。您可以维护一个并行列表,其中包含与这些xy
位置相匹配的标签。以下是一个例子: