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

问题描述 投票:3回答:2

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

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

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

UPDATE

工作示例:

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秒钟,则窗口消失。

UPDATE 2

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

python matplotlib interactive
2个回答
3
投票

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

如果我在Spyder中正确设置运行选项,则可以正常运行。尽管在gnome-terminal中运行它不起作用,但我并不是真的需要它。希望当它成为GUI应用程序的一部分时,不会有任何问题。我会回来的,如果有问题的话,:)


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()
© www.soinside.com 2019 - 2024. All rights reserved.