Spyder:刷新现有图 window 而不是打开新图

Spyder: refresh existing plot window instead of opening a new one

我想在单独的 window 中显示情节。目前我将 IPython 图形后端设置为 "automatic"。

当我重新运行 代码(或绘制另一个图形)时,Spyder 打开一个新绘图window。 window中已经打开的图是否可以刷新而不是打开新图?

当你调用plt.show()时打开的GUIwindow绑定了一个图形。您无法更改其中的图形。 (好吧,准确地说,可能有一个从操作系统获取句柄并操纵其内容的选项,但我认为这不值得付出努力。)

重新运行代码实际上意味着你生成了一个新图形,因为代码不知道它之前已经被 运行。

因此,无法交换图形或重新使用 window 绘制不同的图形。

不过,可以在图打开时使用并操作图。这是通过 plt.ion() 完成的。在 IPython 中调用此命令后,您可以调整图形,例如添加新行等

看这个例子:

IN [6] 处打开 window,当执行 IN [7] 时,图形保持打开状态,内容发生变化。

当然,在同一个 运行 内核中使用 Spyder 是可能的。尝试以下示例,使用 num 作为 plt.figure() 的参数,其中 num 将始终引用同一图形并在已打开时刷新它。也适用于 plt.subplots().

import matplotlib.pyplot as plt

from scipy import *
t = linspace(0, 0.1,1000)
w = rand(1)*60*2*pi

fig = plt.figure(num=10, clear=True, figsize = [10,8])
plt.plot(t,cos(w*t))
plt.plot(t,cos(w*t-2*pi/3))
plt.plot(t,cos(w*t-4*pi/3))