一次绘制一个图形,而不关闭旧图形(matplotlib)

2024-09-30 08:37:29 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有一种方法可以一次绘制一组图形,而不关闭前一个图形,保持对UI的控制,并在最后保持图形打开?也许使用更合适的后端,或者使用OO样式而不是下面使用的pyplot/pylab样式编写它?在

我知道我能行

plt.ioff()
for i in range(10)
    plt.figure()
    arr = thisFunctionTakesTenSecondsToGenerateMyArray()
    plt.plot(arr)
    plt.show()

它将等待我在每次迭代时关闭图形

我也可以

^{pr2}$

它将尽可能快地绘制它们(例如10秒),但会阻止我的整个UI(例如,我甚至不能移动窗口),不会显示轴(我只看到图形窗口),并且会在循环结束时自动关闭所有图形。在

我不想找的第三个选择是

plt.ioff()
for i in range(10)
    plt.figure()
    arr = thisFunctionTakesTenSecondsToGenerateMyArray()
    plt.plot(arr)
plt.show()

这需要等待100秒才能在我的屏幕上看到任何东西。在

我正在寻找类似Matlab的行为,我可以做

for i = 1:10
    figure()
    arr = thisFunctionTakesTenSecondsToGenerateMyArray()
    plot(arr)
    drawnow

这将每10秒绘制一个图形,并且允许我移动窗口,例如,如果图3在顶部,我想在生成图4时返回到图1。在

编辑: 使用python2.7.13,matplotlib2.0.0。在Windows7SP1上使用Spyder3.1.3运行它—我尝试过在内置的IPython控制台、vanilla Python控制台和脚本中运行它,结果都是一样的。在

理想情况下,我希望能够从脚本和交互方式运行它,即通过执行脚本或复制并粘贴到控制台。在


Tags: in脚本图形uiforplotshow绘制
1条回答
网友
1楼 · 发布于 2024-09-30 08:37:29

只要在plt.show(block=False)之后的循环中添加plt.pause(0.0001),并在末尾添加最后一个plt.show(),以防从操作系统命令行执行脚本。在

相关问题 更多 >

    热门问题