2014-11-04 126 views
1

所以,我正在使用matplotlib編寫一個程序,以便最初繪製一個基本圖形,然後在其上放置點。我想要做的是將鼠標放在圖形中的某個點上,然後單擊以添加點。我似乎無法找到任何明確說明如何實際輸入點的資源,因爲點擊鼠標事件發生在繪製初始圖形之後。這是我到目前爲止。在現有的圖上繪製Python Matplotlib

import matplotlib.pyplot as plt 
import numpy as npy 
x,y,vx,vy=npy.loadtxt('issmplotdat.txt',delimiter=',',unpack=True) 
elements=npy.loadtxt('issmplotdatelements.txt',delimiter=',') 

vel=npy.sqrt(vx**2+vy**2) 

fig = plt.figure() 
plt.tricontourf(x,y,elements,vel) 
plt.hold(True) 
plt.plot(3,9, 'ro') 

def on_keyboard(event): 
    print "you pressed", event.key, "\nat:", event.xdata, event.ydata 
    plt.plot(9, 9, 'ro') 
    print "plotted" 

def on_click(event): 
    print('ehllo') 
    print 'you pressed:', event.button, '\nat:', event.xdata, event.ydata 
    plt.plot(event.xdata, event.ydata, 'ro') 


zing = fig.canvas.mpl_connect('button_press_event', on_click) 
ding = fig.canvas.mpl_connect('key_press_event', on_keyboard) 

plt.show() 

非常感謝提前!

-MS

回答

1

您需要通過調用figure.canvas.draw()已調用的繪圖功能後更新的情節。

[注意,這樣做,你需要訪問全局變量圖]

所以你的情況,該on_click回調函數是:

def on_click(event): 
    plt.plot(event.xdata, event.ydata, 'ro') 
    global fig 
    fig.canvas.draw() 

enter image description here