可以在不同的窗口中显示多个图表吗?

13
你好,我正在绘制一个函数的图像,并打印出各个值。 我还想将这10个情况分别绘制在不同的窗口中。
所以我创建了一个新的for循环来进行绘图,但它只绘制了第一个实例,只有在关闭第一个窗口后,我才能看到第二个窗口。
我还尝试使用plt.hold(true)。
以下是我尝试的内容-
def signal():
    t1 = np.random.choice(candidates)
    t2 = np.random.choice(candidates)
    t3 = np.random.choice(candidates)
    t4 = np.random.choice(candidates)
    t5 = np.random.choice(candidates)
    y = a * np.exp(-t /t1) + a * np.exp(-t /t2) + a * np.exp(-t /t3) + a * np.exp(-t /t4) + a * np.exp(-t /t5)
return y

for i in range(nsets):
    signalset = []
    signalset.append(signal())
    print(signal())

for i in range (nsets):
    plt.plot(t, signal())
    plt.show()
    plt.hold(True)

有没有办法我可以同时在10个不同的窗口中生成10个图表?
2个回答

18
图形有一个索引 plt.figure(n),其中n是从1开始的数字。
这允许以后激活已创建的图形以绘制新内容,但也允许在循环中创建多个图形。
为了同时显示所有图像,请在最后使用 plt.show()。
在这种情况下,您可以执行以下操作
for i in range(10):
    plt.figure(i+1) #to let the index start at 1
    plt.plot(t, signal())
plt.show()

这会在脚本末尾创建所有10个窗口。

1

您可以通过指定新的图形索引来创建新的图形窗口,例如plt.figure(10)。在您的情况下,您可以使用:

for i in range (nsets):
    plt.figure(i) # choose figure i to be the current figure (create it if not already existing)
    plt.plot(t, signal())
    plt.show()
    plt.hold(True)

那我是不是需要对 10 个不同的图像分别执行 plt.figure(1), plt.figure(2)……等操作呢? - zerogravty

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接