单击时更新Matplotlib图

Col*_*tic 2 python events matplotlib

当用户单击图形时,我正在尝试使用新的数据点更新matplotlib图。我该如何实现?我尝试使用像plt.draw()这样的东西没有成功。到目前为止,这是我的尝试。我觉得这里缺少基本的东西。

x=[1]
y=[1]

def onclick(event):
    if event.button == 1:
         x.append(event.xdata)
         y.append(event.ydata)

fig,ax=plt.subplots()
ax.scatter(x,y)
fig.canvas.mpl_connect('button_press_event',onclick)
plt.show()
plt.draw()
Run Code Online (Sandbox Code Playgroud)

Tua*_*nDT 6

绑定事件的方式没有任何问题。但是,您仅更新了数据集,而没有告诉您matplotlib对新数据进行重新绘图。为此,我在onclick方法中添加了最后4行。它们是不言自明的,但也有注释。

import matplotlib.pyplot as plt
x = [1];
y = [1];

def onclick(event):
    if event.button == 1:
         x.append(event.xdata)
         y.append(event.ydata)
    #clear frame
    plt.clf()
    plt.scatter(x,y); #inform matplotlib of the new data
    plt.draw() #redraw

fig,ax=plt.subplots()
ax.scatter(x,y)
fig.canvas.mpl_connect('button_press_event',onclick)
plt.show()
plt.draw()
Run Code Online (Sandbox Code Playgroud)

注意:matplotlib在我的计算机(ubuntu 14.04)中更改了比例,因此您可能想研究如何固定xy比例。