gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 02:52:32 24 4
gpt4 key购买 nike

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

例如我知道我能做到

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

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

我也可以

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

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

我不想要的第三个选项是这个

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。

编辑:使用 Python 2.7.13、Matplotlib 2.0.0。在 Windows 7 SP1 上使用 Spyder 3.1.3 运行它——我尝试在内置的 IPython 控制台、vanilla Python 控制台和脚本中运行它,结果都相同。

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

最佳答案

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

关于python - 一次绘制一个图形而不关闭旧图形(matplotlib),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43420096/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com