<分区>
我在使用 matplotlib 绘图时需要使用交互模式(它应该是一个脚本,而不是 python 或 ipython 控制台)。但是设置 plt.ion()
会导致一个奇怪的错误(?)。当我尝试绘制我的图形时(我不认为这真的很重要,我到底做了什么,因为在非交互模式下它工作得很好)我没有看到它 - 我得到一个空白的灰色窗口用于瞬间,它会暂时消失并且程序退出。
如果我明确添加 plt.draw()
(和 plt.pause(1)
以查看结果),我会看到图形按预期显示。如果我在修改后做同样的事情,我想在它可见时对图形进行操作,图形就会改变。但是暂停结束后窗口仍然消失。
我在 Spyder 中运行它,在 Ubuntu 下以 Qt4Agg 作为后端。尝试从终端运行脚本作为 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 应用程序的一部分时不会有问题...