在交互模式下,Matplotlib图形窗口消失

时间:2014-05-01 10:12:43

标签: python matplotlib interactive

我需要在使用matplotlib进行绘图时使用交互模式(它应该是脚本,而不是python或ipython控制台)。但设置plt.ion()会导致一个奇怪的错误(?)。当我试图绘制我的身材时(我不认为它真的很重要,我做的完全正确,因为在非交互模式下它完全正常)我没有看到它 - 我得到一个空白的灰色窗口为瞬间,它暂时消失,程序退出。 如果我明确添加plt.draw()(和plt.pause(1)以查看结果),我会看到该图形按预期显示。如果我在修改之后做了相同的操作,我想在图中看到它时,图形会发生变化。但暂停结束后窗口仍然消失。

我在Spyder中运行它,Qt4Agg作为Ubuntu下的后端。尝试从终端运行脚本为python my_script.py,结果完全相同。

可能是什么问题?在交互模式下如何阻止图形消失?

更新

工作示例:

import matplotlib.pyplot as plt
import numpy as np

plt.ion()

x = np.linspace(1, 10)
y = np.sin(x)
plt.plot(x, y)
plt.draw()
plt.pause(1)

如果我运行此代码,我会看到1秒的正弦图,然后窗口消失。

更新2

我在这里找到了一个解决方案:https://stackoverflow.com/a/10724654/1304161 如果我在Spyder中正确设置了运行选项,它就可以正常工作。虽然在gnome-terminal中运行它不起作用,但我并不需要它。希望,当它成为GUI应用程序的一部分时,这将不会有问题......

2 个答案:

答案 0 :(得分:2)

我在这里找到了一个解决方案:https://stackoverflow.com/a/10724654/1304161

如果我在Spyder中正确设置了运行选项,它的效果非常好。虽然在gnome-terminal中运行它不起作用,但我并不需要它。希望当它成为GUI应用程序的一部分时,不会出现问题。我会回来的,如果那将是一个问题,那么:)

答案 1 :(得分:0)

您可以通过在末尾添加以下两行来使其工作:

plt.ioff()
plt.show()

因此该程序可以正常工作:

import matplotlib.pyplot as plt
import numpy as np

plt.ion()

x = np.linspace(1, 10)
y = np.sin(x)
plt.plot(x, y)
plt.draw()
plt.ioff()
plt.show()