python - 将光标添加到 matplotlib

标签 python matplotlib pyqt

这张图片显示了我想要实现的目标:

我正在寻找一种解决方案,将光标添加到 matplotlib 中的绘制线中。光标应该是可拖动的,但只能在绘制的线上移动。标签应显示迹线上标记点的实际值。

我不知道使用哪个对象作为此光标/标记。

最佳答案

matplotlib 页面上有一个示例,您可以对其进行修改以显示感兴趣位置处的点。

import matplotlib.pyplot as plt
import matplotlib.widgets as widgets
import numpy as np



class SnaptoCursor(object):
    def __init__(self, ax, x, y):
        self.ax = ax
        self.ly = ax.axvline(color='k', alpha=0.2)  # the vert line
        self.marker, = ax.plot([0],[0], marker="o", color="crimson", zorder=3) 
        self.x = x
        self.y = y
        self.txt = ax.text(0.7, 0.9, '')

    def mouse_move(self, event):
        if not event.inaxes: return
        x, y = event.xdata, event.ydata
        indx = np.searchsorted(self.x, [x])[0]
        x = self.x[indx]
        y = self.y[indx]
        self.ly.set_xdata(x)
        self.marker.set_data([x],[y])
        self.txt.set_text('x=%1.2f, y=%1.2f' % (x, y))
        self.txt.set_position((x,y))
        self.ax.figure.canvas.draw_idle()

t = np.arange(0.0, 1.0, 0.01)
s = np.sin(2*2*np.pi*t)
fig, ax = plt.subplots()

#cursor = Cursor(ax)
cursor = SnaptoCursor(ax, t, s)
cid =  plt.connect('motion_notify_event', cursor.mouse_move)

ax.plot(t, s,)
plt.axis([0, 1, -1, 1])
plt.show()

enter image description here

关于python - 将光标添加到 matplotlib,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44679473/

相关文章:

pandas - DataFrame图上日期的x轴标签频率增加

python - 如何使用传感器 R305 搜索已保存的指纹?

python - PyQt Qthread自动重启

qt - 如何通过拖动 Widget 的角来调整 Widget 上的 QTableWidget 大小

python - 如何查找 kubernetes 中分配给 V1ObjectMeta 的名称是什么?

javascript - Python 2.7x 中是否有像 Javascript 中那样的对象传播语法?

python - 内容类型 text/plain 的文件扩展名为 .ksh?

python - MatplotLib 通过轴获取所有注释

python - 如何使用 repoze.who(和 bottle.py)处理注销?

python - 使用 Networkx 在图形的 matplotlib 上高效制作动画