当用户点击图表时,我正在尝试使用新数据点更新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()
答案 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比例。