Spyder:刷新现有的绘图窗口,而不是打开一个新窗口

时间:2017-04-02 19:21:27

标签: python matplotlib ipython spyder

我想在一个单独的窗口中显示情节。目前我将IPython图形后端设置为“自动”。

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

2 个答案:

答案 0 :(得分:1)

调用plt.show()时打开的GUI窗口与图形绑定。你不能改变里面的数字。 (嗯,确切地说,可能有从操作系统获取句柄并操纵其内容的选项,但我认为这不值得付出努力。)

重新运行代码实际上意味着您生成了一个新的数字,因为代码不知道它之前已经运行过。

因此,交换图形或重复使用窗口绘制不同的图形是不可能的。

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

见这个例子:

enter image description here

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

答案 1 :(得分:-1)

当然,在相同的运行内核中,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))