这与几年前另一个人的早期问题密切相关: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的每个排列,以及我可用列表中的每个后端。< / p>
这似乎是一个非常基本的功能!请告诉我这可以做到。我觉得matplolib在这里说http://matplotlib.org/users/shell.html表示#34;默认情况下,绘图延迟到脚本结束时#34;,但没有关于如何覆盖默认值的建议。请帮忙!
答案 0 :(得分:1)
您的示例适用于我(我的后端是osx),尽管图形窗口首先出现在其他窗口后面。我需要使用alt-tab将它提升到前面。
尝试使用IPython的--matplotlib
选项启动脚本。您可以选择后端或让其自动检测,如下所示:ipython --matplotlib auto yourscript.py
现在不确定,但是raw_input
功能会等待你按回车键,而不仅仅是按任何键。
修改强>
关于你的上一句话:this section解释了如何在脚本结束前强制绘图。这可以使用draw
函数完成。在交互模式下,每个pyplot命令也会调用draw
。在此上下文中绘制意味着通过后端渲染图形。