单击时更新Matplotlib图

时间:2016-11-05 03:07:38

标签: 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()

1 个答案:

答案 0 :(得分:4)

绑定事件的方式没有错。但是,您只更新了数据集,并没有告诉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()

注意:我的计算机中的matplotlib(ubuntu 14.04)会更改比例,因此您可能希望了解如何修复x-y比例。