Spyder互动剧情:等待剧情关闭继续

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

我正在使用 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")
matplotlib spyder interactive
3个回答
2
投票

您需要停用 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
)。


0
投票

当我运行代码时,绘图窗口阻止后续代码执行的所需行为已经存在。所以我想还涉及一些其他设置。因此,我也无法测试以下内容,但我认为您需要在调用

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")

0
投票

这对我有用。

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