我在使用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应用程序的一部分时,不会有任何问题...
我在这里找到了解决方案:https://stackoverflow.com/a/10724654/1304161
如果我在Spyder中正确设置运行选项,则可以正常运行。尽管在gnome-terminal中运行它不起作用,但我并不是真的需要它。希望当它成为GUI应用程序的一部分时,不会有任何问题。我会回来的,如果有问题的话,:)
您可以通过在末尾添加这两行来使其工作:
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()