是否可以使用matplotlib在单独的窗口中显示多个绘图?

2024-04-29 01:27:19 发布

您现在位置:Python中文网/ 问答频道 /正文

你好,我正在绘制一个函数10次,同时也打印单独的值。 我还想把这10个箱子分别放在不同的窗口里。

因此,我为绘图创建了一个新的for loop,它仍然只绘制第一个实例,一旦关闭第一个实例,只有这样我才能看到第二个实例。

我还尝试使用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个图?


Tags: 实例forsignalnp绘制pltrandomt1
2条回答

数字有一个索引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个窗口。

可以通过指定新的地物索引来创建新的地物窗口,例如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)

相关问题 更多 >