有没有一种方法可以一次绘制一组图形,而不关闭前一个图形,保持对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控制台和脚本中运行它,结果都是一样的。在
理想情况下,我希望能够从脚本和交互方式运行它,即通过执行脚本或复制并粘贴到控制台。在
只要在
plt.show(block=False)
之后的循环中添加plt.pause(0.0001)
,并在末尾添加最后一个plt.show()
,以防从操作系统命令行执行脚本。在相关问题 更多 >
编程相关推荐