Matplotlib линейная линия в реальном времени

У меня есть серьезная неудача по этому вопросу на некоторое время...

import numpy as np
import matplotlib.pyplot as plt

plt.ion()
fig = plt.figure(1)
ax = fig.add_subplot(111)
ax.set_title("linear realtime")
line, = ax.plot([],[])

i = 0 
while ( i < 1000 ):
        #EDIT:
        # this is just sample data, but I would eventually like to set data 
        # where it can be floating numbers...
        line.set_data(i,i)             
        fig.canvas.draw()
        i += 1

Я пытаюсь провести линейную линию в реальном времени, но я не могу придумать результат. Заранее спасибо. До сих пор у меня появилась фигура, но на холсте ничего не рисуется.

EDIT:

Интересно.... Теперь я могу нарисовать точки на линии, но теперь я не могу показать их связь между каждой точкой... Я также заметил, что если вы удалили ko-, когда она была построена... ничего не появляется, кто-нибудь знает почему?

import numpy as n
import pylab as p
import time

x=0
y=0 
p.ion()
fig=p.figure(1)
ax=fig.add_subplot(111)
ax.set_xlim(0,10)
ax.set_ylim(0,10)
line,=ax.plot(x,y,'ko-')
for i in range(10):
    x = i
    y = i
    line.set_data(x,y)
    p.draw()

Ответ 1

добавьте p.pause(.001) в свой цикл. Вы должны дать время, чтобы циклы событий gui запускали и обновляли дисплей.

Это связано с проблемой # 1646.

Другая проблема заключается в том, что, когда вы выполняете set_data, он заменяет данные, которые строятся с переданными x и y, а не добавляет к уже имеющимся данным. (Чтобы увидеть это, используйте p.pause(1)). Когда вы удаляете 'ko-', который по умолчанию не имеет маркера с точкой подключения линии, вы накладываете одну точку, поэтому ничего не появляется.

Думаю, вы намеревались написать это:

x=0
y=0 

fig=plt.figure(1)
ax=fig.add_subplot(111)
ax.set_xlim(0,10)
ax.set_ylim(0,10)
line,=ax.plot(x,y,'ko-')
for i in range(10):
    x = np.concatenate((line.get_xdata(),[i]))
    y = np.concatenate((line.get_ydata(),[i]))
    line.set_data(x,y)
    plt.pause(1)