Python matplotlib从绘图中获取光标数据

时间:2017-07-20 18:38:02

标签: python numpy matplotlib

,大家好,我正在使用python> matplotlib,我想通过使用光标从图中获取数据。

import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0., 2., 0.1)
plt.plot(t,t,'g^')
ax = plt.gca()
line = ax.lines[0]
xd = line.get_xdata()
yd = line.get_ydata()
valx = np.where(xd==xd[0])
plt.show()

在图中,从0,01.9,1.9将有19个点;所以......

当我先点击0,0然后点击0.3,0.3时,我想获取值:

(0,0);
(0.1,0.1);
(0.2,0.2);
(0.3,0.3)

有办法做到这一点吗?

但是还有一个问题是光标必须超过该点,有没有办法将光标定位在图形上而不是其他点???

1 个答案:

答案 0 :(得分:1)

matplotlib页面上有一个Picker example。您可以调整它以在单击第n个点时显示前n个点对。

import numpy as np
import matplotlib.pyplot as plt
t = np.arange(0., 2., 0.1)
line, = plt.plot(t,t,'g^', picker=6)

def click(event):
    artist = event.artist
    ind = event.ind[0]
    xd = artist.get_xdata()[:ind]
    yd = artist.get_ydata()[:ind]
    print( zip(xd, yd) )

cid = plt.gcf().canvas.mpl_connect("pick_event", click)

plt.show()