2017-03-04 57 views
1

我有以下代碼,它首先顯示一個matplotlib圖。然後,我必須關閉第一個情節,以便出現第二個情節。在matplotlib中同時顯示2個圖,而不是一個接一個地顯示

import pandas as pd 
import numpy as np 
import matplotlib.pyplot as plt 
import mglearn 

# generate dataset 
X, y = mglearn.datasets.make_forge() 
# plot dataset 
mglearn.discrete_scatter(X[:, 0], X[:, 1], y) 
plt.legend(["Class 0", "Class 1"], loc=4) 
plt.xlabel("First feature") 
plt.ylabel("Second feature") 
print("X.shape: {}".format(X.shape)) 

plt.show() 

X, y = mglearn.datasets.make_wave(n_samples=40) 
plt.plot(X, y, 'o') 
plt.ylim(-3, 3) 
plt.xlabel("Feature") 
plt.ylabel("Target") 

plt.show() 

我想要在同一時間出現2個matplotlib圖。

回答

2

plt.show()地塊都出現在狀態機的數字。僅在腳本結束時調用它,可確保先前創建的所有圖形都被繪製出來。

現在你需要確保每個圖確實是在不同的圖中創建的。這可以使用plt.figure(fignumber)來實現,其中fignumber是從索引1開始的數字。

import matplotlib.pyplot as plt 
import mglearn 

# generate dataset 
X, y = mglearn.datasets.make_forge() 

plt.figure(1) 
mglearn.discrete_scatter(X[:, 0], X[:, 1], y) 
plt.legend(["Class 0", "Class 1"], loc=4) 
plt.xlabel("First feature") 
plt.ylabel("Second feature") 


plt.figure(2) 
X, y = mglearn.datasets.make_wave(n_samples=40) 
plt.plot(X, y, 'o') 
plt.ylim(-3, 3) 
plt.xlabel("Feature") 
plt.ylabel("Target") 

plt.show() 
2

創建兩個figures,只叫show()一次

fig1 = plt.figure() 
fig2 = plt.figure() 

ax1 = fig1.add_subplot(111) 
ax2 = fig2.add_subplot(111) 

ax1.plot(x1,y1) 
ax2.plot(x2,y2) 

plt.show() 
相關問題