2017-03-15 66 views
0

我正在學習如何使用子圖。例如:如何製作重疊的matplotlib.pyplot子圖?

import numpy 
import matplotlib.pyplot as plt 

plt.figure(1) 
plt.subplot(221) 
plt.subplot(222) 
plt.subplot(223) 

plt.show() 

plt.close(1) 

我得到3個次要情節在如圖一

現在我想打一個大的次要情節與第一個中的其他次要情節。我試過了:

plt.figure(1) 
plt.subplot(111) 
plt.subplot(222) 
plt.subplot(223) 

但是第一個子圖消失了。

我的問題:是否可以重疊子圖?

謝謝

回答

1

這是不可能使用plt.subplots()創建重疊的次要情節。另外,plt.subplot2grid將不起作用。

但是,您可以使用figure.add_subplot()方法創建它們。

import matplotlib.pyplot as plt 
fig = plt.figure(1) 
fig.add_subplot(111) 
fig.add_subplot(222) 
fig.add_subplot(223) 

plt.show() 

enter image description here

+0

這兩種方法都非常有趣(add_subplot和add_axes)。但add_subplot正是我正在尋找的答案。使用其中一種還是有優勢的? – daniel

+0

他們是非常不同的。 'add_subplot'根據某個網格創建一個軸。優點在於網格稍後可以被修改並且軸線貼在它上面,例如,可以調用'plt.tight_layout()'或'plt.subplots_adjust'。相反,'add_axes'將軸放在指定位置。它會留在原地。根據具體情況,這可能是一個優點或缺點。 – ImportanceOfBeingErnest

3

如果你想在次要情節的大小和位置的全面控制,使用Matplotlib add_axes方法來代替。

import matplotlib.pyplot as plt 

fig = plt.figure(figsize=(6, 4)) 

ax1 = fig.add_axes([0.1, 0.1, 0.85, 0.85]) 
ax2 = fig.add_axes([0.4, 0.6, 0.45, 0.3]) 
ax3 = fig.add_axes([0.6, 0.2, 0.2, 0.65]) 

ax1.text(0.01, 0.95, "ax1", size=12) 
ax2.text(0.05, 0.8, "ax2", size=12) 
ax3.text(0.05, 0.9, "ax3", size=12) 

plt.show() 

Imgur