1

我有一段时间在这个问题上遇到了重大挫折......

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

我正在尝试实时绘制一条直线,但我无法得出结果。提前致谢。到目前为止,我有一个人物出现,但没有在画布上绘制任何内容。

编辑:

有趣....我现在可以在线上绘制点,但是现在,我无法显示它们之间的连接性...我还注意到,如果您在绘制时删除了 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()
4

1 回答 1

2

p.pause(.001)在你的循环中添加一个。您需要留出时间让 gui 事件循环触发和更新显示。

这与问题 #1646有关。

您遇到的另一个问题是,当您这样做时,set_data它会替换用 绘制xy传入的数据,而不是附加到已经存在的数据。(要清楚地看到这一点,请使用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)
于 2013-01-10T20:22:33.867 回答