这与几年前另一个人提出的问题高度相关:Matplotlib - Force plot display and then return to main code
我在MacOSX 10.8.5上使用Canopy 1.5.5和matplotlib 1.4.3。
我将需要加载数据,查看它,按enter键批准并移动到下一个数据集(并执行几千次,因此获得此功能是至关重要的)。这是我的MWE:
import numpy as np
from matplotlib import pyplot as plt
plt.ion()
plt.figure()
ind=np.arange(5)
for i in ind:
plt.clf()
plt.scatter(ind,ind+i)
plt.title('this is plot number %i' % i)
plt.show()
u=raw_input("Press any button")
代码似乎做了所有的事情,除了实际向我显示绘图之外。如果我结束脚本(或中断它),那么我会看到当前的图形。
我已经尝试了前面答案中的所有方法:使用和不使用交互模式,使用和不使用plt.show(block=False),所有plt.draw和plt.show的组合,以及我可用列表中的所有后端。
这似乎是一个非常基本的功能!请告诉我这是可以做到的。我觉得奇怪的是,matplolib在这里http://matplotlib.org/users/shell.html说“默认情况下,绘制被推迟到脚本的末尾”,但没有关于如何覆盖默认设置的建议。请帮帮我!
发布于 2015-11-22 22:46:39
您的示例适用于我(我的后端是osx),尽管图形窗口一开始出现在其他窗口后面。我需要使用alt-tab键将其提升到最前面。
尝试使用IPython的--matplotlib
选项启动脚本。你可以选择一个后端或者让它被自动检测,如下所示:ipython --matplotlib auto yourscript.py
不确定您是否现在,但raw_input
函数等待您按下return键,而不是任何键。
编辑:
关于你的最后一句话:this section解释了如何在脚本结束之前强制绘制。这可以使用draw
函数来完成。在交互模式下,每个pyplot命令也会调用draw
。在此上下文中绘制意味着通过后端渲染图形。
https://stackoverflow.com/questions/33860254
复制