检测鼠标悬停在图例上,并在 matplotlib 中显示工具提示(标签/注释)?

sdbbs

我已经看到当鼠标悬停在 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()

结果如下图:

mpl_plot.png

问题是:如果我移动鼠标指针,让它悬停在图例条目上,那么我在事件中得到的打印输出是:

....
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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

将鼠标悬停在matplotlib中的某个点上时可以显示标签吗?

将鼠标悬停在词干图中的matplotlib中的某个点上时,是否可以显示标签?

如果将鼠标悬停在Plotly上,如何显示与图例中所示不同的跟踪名称?

d3-将鼠标悬停在图例上以突出显示相应的数据

当鼠标悬停在图例点上时,CanvasJs在图表中隐藏某些线

鼠标悬停在d3上的工具提示

将鼠标悬停在元素上的工具提示

将鼠标悬停在div上,同时将鼠标悬停在整个标签上

如何在Pygame中检测鼠标悬停在图像上(圆形)

将鼠标悬停在图像上时显示标签

鼠标悬停在栏上时如何显示标签

将鼠标悬停在d3中的图例上时,突出显示堆叠条形图中的相应图层

将鼠标悬停在选项卡上时显示工具提示

当鼠标悬停在数据点上时如何显示工具提示

将鼠标悬停在列表项上时如何显示工具提示?

在将鼠标悬停在文本上时显示工具提示

仅将鼠标悬停在单词上时限制工具提示显示

如何在Kivy中的matplotlib图表上实现鼠标悬停数据标签弹出窗口

将鼠标悬停在图像上并在另一个div中显示文本

将鼠标悬停在导航栏上显示图像

将鼠标悬停在元素上并显示li元素

将鼠标悬停在图像上时按钮显示

鼠标悬停在画布上显示文本

如何显示鼠标悬停在角材料上的角度?

在鼠标悬停在图像上时显示文本

在鼠标悬停在圆上时显示数据

:将鼠标悬停在.SVG上显示图像

直到将鼠标悬停在元素上才会显示

将鼠标悬停在某些文字上,显示图片