Python 是否可以有多个PyPlot窗口?还是我只限于子地块?

Python 是否可以有多个PyPlot窗口?还是我只限于子地块?,python,matplotlib,plot,interpreter,freeze,Python,Matplotlib,Plot,Interpreter,Freeze,我不知道如何更清楚地表达我的问题。基本上,PyPlot是否仅限于一个实例/窗口?我尝试的任何破解或解决方法都会导致我的程序冻结,或使第二个pyplot窗口排队,直到第一个窗口关闭。当然,只需打开一个新图形: import matplotlib.pyplot as plt plt.plot(range(10)) plt.figure() plt.plot(range(10), 'ro-') plt.figure(), plt.plot(...) plt.show() # only do t

我不知道如何更清楚地表达我的问题。基本上,PyPlot是否仅限于一个实例/窗口?我尝试的任何破解或解决方法都会导致我的程序冻结,或使第二个pyplot窗口排队,直到第一个窗口关闭。

当然,只需打开一个新图形:

import matplotlib.pyplot as plt

plt.plot(range(10))

plt.figure()
plt.plot(range(10), 'ro-')

plt.figure(), plt.plot(...)

plt.show() # only do this once, at the end
如果您在默认的python解释器中运行这个程序,那么它将不起作用,因为每个图形都需要进入gui的主循环。如果您想在交互式shell中运行东西,请查看IPython。如果您只是正常运行(即,将其放入一个文件并调用
python filename.py
),它将正常工作。

使用
plt.figure()
并使用特定的数字,以便固定窗口:

plt.figure(200)
plt.plot(x)
plt.show()
对于另一个绘图,请使用不同的数字:

plt.figure(300)
plt.plot(y)
plt.show()

您的问题的答案是否定的。您可以有任意多个窗口。首先,只是打字

plt.figure(n) #n must be a different integer for every window
每一个你想要的新形象。其次,写作

plt.show()
只有一次(!)在你想画的东西的末尾。以下是两个直方图的示例:

plt.figure(1)
plt.hist(dataset1)
plt.figure(2)
plt.hist(dataset2)
plt.show()

您可以使用
pyplot.show
properties执行此操作

例如:

plt.show(block=False)

这个答案暗示(我错过了)您应该在最后只调用
plt.show()
一次。这将在下一节中进一步讨论。如果您多次调用plt.show(),那么它仍然会执行OP提到的排队(阻止每个窗口,直到上一个窗口关闭)。figure是否有一个单独的交互模式,如
fig.ion()
或is
ion()
全局应用?是否有更面向对象的方法来处理多个图形?如果希望窗口具有名称,也可以执行
plt.figure(name)
!如果数字不重要,只需调用
plt.figure()
,无需参数,就会分配一个新的数字。看见此外,使用对
show()
的多次调用可能不是您真正想要的,请参阅此回答忽略了窗口编号是可选的这一事实(将分配一个新的唯一编号)。看见