2016-11-05 2 views
0

Я пытаюсь обновить график matplotlib с новой точкой данных, когда пользователь нажимает на график. Как я могу это достичь? Я пробовал использовать такие вещи, как plt.draw(), без каких-либо успехов. Вот моя попытка. Я чувствую, что мне не хватает чего-то фундаментального здесь.Обновление графика Matplotlib при нажатии

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

ответ

3

Нет ничего плохого в том, как вы связываете свое мероприятие. Однако вы только обновили набор данных и не указали matplotlib, чтобы сделать перепланировку с новыми данными. С этой целью я добавил последние 4 строки в методе onclick. Они не требуют пояснений, но есть и комментарии.

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) изменяет масштаб, так что вы, вероятно, хотите, чтобы изучить, как зафиксировать х-у шкалы.