2017-07-20 61 views
0

,嗨,大家好,我正在使用python> 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() 

在情節會有19點從0,01.9,1.9;所以......

當我點擊0,0第一,然後0.3,0.3,我希望得到的值:

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

有沒有辦法做到這一點?

但也有一個問題,光標必須超過這一點,有沒有辦法將光標放在圖形上,而不是其他點?

回答

0

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()