我正在使用 Spyder 在 Windows 上工作,我使用 matplotlib 进行绘图。我的问题是我想要进行交互式绘图(或者有时绘制很多东西)并且我希望spyder等待我关闭图形以继续代码(与传统终端相同的方式)。
我试过了 plt.ion(), %mpl TkAgg 在加载 matplotlib、Ipython 和 python 控制台之前...我找不到任何解决方案。
如果您想要一个示例,目标是仅当我在 Windows 10 上使用 Spyder 关闭图形时才打印“hello”。
import matplotlib.pyplot as plt
plt.figure('Close me to get hello')
plt.plot(0,0,'*')
plt.show()
print("hello")
您需要停用 Spyder 的 Matplotlib 支持,方法是:
Tools > Preferences > IPython console > Graphics
并取消选择名为
的选项Activate support
那么你需要像这样更改你的代码
import matplotlib
matplotlib.use('TkAgg')
import matplotlib.pyplot as plt
plt.figure('Close me to get hello')
plt.plot(0,0,'*')
plt.show()
print("hello")
在创建绘图之前手动设置后端(在本例中为
TkAgg
)。
当我运行代码时,绘图窗口阻止后续代码执行的所需行为已经存在。所以我想还涉及一些其他设置。因此,我也无法测试以下内容,但我认为您需要在调用
show
之前关闭交互模式。
import matplotlib.pyplot as plt
plt.ion() # turn interactive on, if it isn't already
plt.figure('Close me to get hello')
plt.plot(0,0,'*')
plt.draw()
# possibly do other stuff that would make the use of interactive mode useful
plt.ioff() # turn interactive off
plt.show()
print("hello")
这对我有用。
import matplotlib.pyplot as plt
plt.figure('Close me to get hello')
plt.plot(0,0,'*')
plt.draw()
# possibly do other stuff that would make the use of interactive mode useful
plt.show(block=True)
print("hello")