我想在一个单独的窗口中显示情节。目前我将IPython图形后端设置为“自动”。
当我重新运行代码(或绘制另一个图)时,Spyder打开一个新的绘图窗口。是否可以在已打开的窗口中刷新图形而不是打开新图形?
答案 0 :(得分:1)
调用plt.show()
时打开的GUI窗口与图形绑定。你不能改变里面的数字。 (嗯,确切地说,可能有从操作系统获取句柄并操纵其内容的选项,但我认为这不值得付出努力。)
重新运行代码实际上意味着您生成了一个新的数字,因为代码不知道它之前已经运行过。
因此,交换图形或重复使用窗口绘制不同的图形是不可能的。
然而,可以使用图形并在图形打开时操纵图形。这是通过plt.ion()
完成的。在IPython中调用此命令后,您可以调整该数字,例如添加新行等等。
见这个例子:
在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))