我已经看到当鼠标悬停在 matplotlib 中的一个点上时可以显示标签吗?- 但不幸的是,它对这个特定案例没有帮助。
考虑这个例子:
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import matplotlib
print("matplotlib.__version__ {}".format(matplotlib.__version__))
import matplotlib.pyplot as plt
import numpy as np
def onhover(event, fig, axes):
print(event)
def main():
xdata = np.arange(0, 101, 1) # 0 to 100, both included
ydata1 = np.sin(0.01*xdata*np.pi/2)
fig, ax1 = plt.subplots(1, 1, figsize=(9, 6), dpi=120)
fig.subplots_adjust(hspace=0)
pl11, = ax1.plot(xdata, ydata1, color="Red", label="My plot")
leg = ax1.legend(ncol=1, bbox_to_anchor=(0,1.01), loc="lower left", borderaxespad=0, prop={'size': 8})
fig.canvas.mpl_connect('motion_notify_event', lambda event: onhover(event, fig, (ax1,) ))
plt.show()
# ENTRY POINT
if __name__ == '__main__':
main()
结果如下图:
问题是:如果我移动鼠标指针,让它悬停在图例条目上,那么我在事件中得到的打印输出是:
....
motion_notify_event: xy=(175, 652) xydata=(None, None) button=None dblclick=False inaxes=None
motion_notify_event: xy=(174, 652) xydata=(None, None) button=None dblclick=False inaxes=None
motion_notify_event: xy=(173, 652) xydata=(None, None) button=None dblclick=False inaxes=None
motion_notify_event: xy=(172, 652) xydata=(None, None) button=None dblclick=False inaxes=None
...这是有道理的,因为我故意将图例放在情节之外。
但是,现在我不知道如何获得对图例条目的引用?我想要做的基本上是获取对图例条目的引用,以便我可以在“工具提示”(即,在这种情况下,Matplotlib)中编写与图例标签(此处为“我的情节”)相同的文本注释)后跟一些其他文本;然后,一旦鼠标离开图例条目的区域,工具提示/注释就会消失。
我可以用 Matplotlib 实现这一点 - 如果可以,如何实现?
你可以这样做:
def onhover(event):
if leg.get_window_extent().contains(event.x,event.y):
print(event, "In legend! do something!")
xdata = np.arange(0, 101, 1) # 0 to 100, both included
ydata1 = np.sin(0.01*xdata*np.pi/2)
fig, ax1 = plt.subplots(1, 1, figsize=(9, 6), dpi=120)
pl11, = ax1.plot(xdata, ydata1, color="Red", label="My plot")
leg = ax1.legend(ncol=1, bbox_to_anchor=(0,1.01), loc="lower left", borderaxespad=0, prop={'size': 8})
fig.canvas.mpl_connect('motion_notify_event', onhover)
plt.show()
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句