环境:Python 2.7,matplotlib 1.3,IPython笔记本1.1,linux,chrom。代码位于一个输入单元格中,使用--pylab=inline
我想使用IPython笔记本和熊猫来消耗一个流,并每5秒动态更新一个情节。
当我只使用print语句以文本格式打印数据时,它工作得非常好:输出单元格只是不断打印数据和添加新行。但是,当我试图绘制数据(然后在循环中更新它)时,输出单元格中永远不会显示该图。但如果我去掉循环,就画一次。效果很好。
然后我做了一些简单的测试:
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),否则输出不会显示任何内容。在我打断它之后,这幅图正确地显示为多条重叠线。但是,我真正想要的是一个显示并每5秒更新一次的情节(或者在plot()
函数被调用,就像我前面提到的打印语句输出一样,它运行得很好)。只有在分区完全完成后才能显示出最终的图表,这不是我想要的。
我甚至尝试在每个plot()
等。都不管用。想知道如何在IPython笔记本中通过一个单元格内的for/while循环动态更新一个情节。
发布于 2018-03-16 13:44:56
使用IPython.display
模块:
%matplotlib inline
import time
import pylab as pl
from IPython import display
for i in range(10):
pl.plot(pl.randn(100))
display.clear_output(wait=True)
display.display(pl.gcf())
time.sleep(1.0)
发布于 2018-03-16 14:11:15
可以通过添加wait=True
到clear_output
:
display.clear_output(wait=True)
display.display(pl.gcf())
https://stackoverflow.com/questions/-100007645
复制相似问题