首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何动态更新IPython笔记本中循环中的情节(在一个单元格内)

如何动态更新IPython笔记本中循环中的情节(在一个单元格内)
EN

Stack Overflow用户
提问于 2018-03-16 04:49:45
回答 2查看 0关注 0票数 0

环境:Python 2.7,matplotlib 1.3,IPython笔记本1.1,linux,chrom。代码位于一个输入单元格中,使用--pylab=inline

我想使用IPython笔记本和熊猫来消耗一个流,并每5秒动态更新一个情节。

当我只使用print语句以文本格式打印数据时,它工作得非常好:输出单元格只是不断打印数据和添加新行。但是,当我试图绘制数据(然后在循环中更新它)时,输出单元格中永远不会显示该图。但如果我去掉循环,就画一次。效果很好。

然后我做了一些简单的测试:

代码语言:txt
复制
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循环动态更新一个情节。

EN

回答 2

Stack Overflow用户

发布于 2018-03-16 13:44:56

使用IPython.display模块:

代码语言:txt
复制
%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)
票数 0
EN

Stack Overflow用户

发布于 2018-03-16 14:11:15

可以通过添加wait=Trueclear_output:

代码语言:txt
复制
display.clear_output(wait=True)
display.display(pl.gcf())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档