Matplotlib - 在脚本中强制显示

时间:2015-11-22 21:12:48

标签: python matplotlib

这与几年前另一个人的早期问题密切相关: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;,但没有关于如何覆盖默认值的建议。请帮忙!

1 个答案:

答案 0 :(得分:1)

您的示例适用于我(我的后端是osx),尽管图形窗口首先出现在其他窗口后面。我需要使用alt-tab将它提升到前面。

尝试使用IPython的--matplotlib选项启动脚本。您可以选择后端或让其自动检测,如下所示:ipython --matplotlib auto yourscript.py

现在不确定,但是raw_input功能会等待你按回车键,而不仅仅是按任何键。

修改

关于你的上一句话:this section解释了如何在脚本结束前强制绘图。这可以使用draw函数完成。在交互模式下,每个pyplot命令也会调用draw。在此上下文中绘制意味着通过后端渲染图形。