2017-02-24 76 views
2

你好我正在绘制一个函数10次,并打印单独的值。 我也想将所有的10个案例分开绘制在不同的窗口中。是否可以使用matplotlib在单独的窗口中显示多个图?

因此,我为绘图创建了一个新的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个地块?

回答

4

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

0

您可以通过指定新图形索引来创建新图形窗口,例如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) 
+0

所以是不是像10个不同的数字我应该做plt.figure(1),pt.figure(2)....等等? – zerogravty

+0

使用您的循环变量:请参阅编辑 – Julien

+0

现在就试试。谢谢 :) – zerogravty

相关问题