环境:Python 2.7、Matplotlib 1.3、IPython notebook 1.1、Linux 和 Chrome。代码位于一个输入单元格中,使用--pylab=inline
.
我想使用 IPython notebook 和 Pandas 来消费一个流并每五秒动态更新一个图。
当我只使用打印语句以文本格式打印数据时,它工作得非常好:输出单元格只是保持打印数据并添加新行。但是当我尝试绘制数据(然后循环更新)时,该图永远不会出现在输出单元格中。但是,如果我删除循环,并且只绘制一次,它就可以正常工作。
然后我做了一些简单的测试:
i = pd.date_range('2013-1-1',periods=100,freq='s')
while True:
plot(pd.Series(data=np.random.randn(100), index=i))
#pd.Series(data=np.random.randn(100), index=i).plot() also tried this one
time.sleep(5)
Ctrl在我手动中断进程 ( ++ M)之前,输出不会显示任何内容I。在我打断它之后,该图正确显示为多条重叠线。但我真正想要的是每五秒显示并更新一次的图(或者每当plot()
调用函数时,就像我上面提到的 print 语句输出一样,效果很好)。仅在单元格完全完成后显示最终图表不是我想要的。
我什至尝试在每个plot()
等之后显式添加 draw() 函数。它们都不起作用。如何在 IPython 笔记本的一个单元格中通过for / while循环动态更新绘图?