matplotlib 悬停在垂直跨越区域上时显示标签

jjjwad0x  于 2023-04-12  发布在  其他
关注(0)|答案(1)|浏览(183)

当我将鼠标悬停在跨越区域上时,标签只显示沿着跨越区域的两侧,而不是整个区域。
我希望当我将鼠标悬停在标签上时,标签可以在整个区域中查看。如何实现此逻辑?

import matplotlib.pyplot as plt
import mplcursors

plt.axvspan(2,3,gid='yes',alpha=0.3,label = 'y')

mplcursors.cursor(hover=True).connect(
      "add", lambda sel: sel.annotation.set_text(sel.artist.get_label()))

plt.show()
wa7juj8i

wa7juj8i1#

我不知道为什么mplcursors在问题中的代码中不起作用;但是这里是如何在悬停轴跨度时显示注解(没有mplcursors):

import matplotlib.pyplot as plt

fig, ax = plt.subplots()
span = ax.axvspan(2,3,gid='yes',alpha=0.3,label = 'y')

annot = ax.annotate("Y", xy=(0,0), xytext=(20,20), textcoords="offset points",
                    bbox=dict(boxstyle="round", fc="w"),
                    arrowprops=dict(arrowstyle="->"))
annot.set_visible(False)

def hover(event):
    vis = annot.get_visible()
    if event.inaxes == ax:
        cont, ind = span.contains(event)
        if cont:
            annot.xy = (event.xdata, event.ydata)
            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()
  • 注解将移动到图上光标指向的任何位置。

相关问题