2016-11-27 65 views
1

Ø上午試圖找出如何放置另一個情節,立方體狀的,在三個次要情節Matplotlib gridspec - 將另一立方情節旁邊的幾個次要情節

import matplotlib.pyplot as plt 
import matplotlib.gridspec as gridspec 
gs1 = gridspec.GridSpec(3,2) 
ax1 = plt.subplot(gs1[0, :]) 
ax2 = plt.subplot(gs1[1, :],sharex=ax1) 
ax3 = plt.subplot(gs1[2, :],sharex=ax1) 
plt.setp(ax1.get_xticklabels(), visible=False) 
plt.setp(ax2.get_xticklabels(), visible=False) 
plt.show() 

enter image description here 如何正確可我使用gridspec放置另一個橫跨三行旁邊的圖表?

回答

2

你已經被細分爲兩列定義的gridspec適當的拆分。指定左軸使用的第一列(見下文的變化),並且被認爲是「立方」(縱橫比1)使用您的gridspec的右側列中的軸。

import matplotlib.pyplot as plt 
import matplotlib.gridspec as gridspec 
gs1 = gridspec.GridSpec(3,2) 
ax1 = plt.subplot(gs1[0, 0]) 
ax2 = plt.subplot(gs1[1, 0],sharex=ax1) 
ax3 = plt.subplot(gs1[2, 0],sharex=ax1) 
ax4 = plt.subplot(gs1[:, 1]) # NEW 
ax4.set_aspect('equal', adjustable='box') # NEW 
plt.setp(ax1.get_xticklabels(), visible=False) 
plt.setp(ax2.get_xticklabels(), visible=False) 
plt.show() 

gridspec with two columns

或者,也可以定義一個第二gridspec並更新每個gridspec的(相對)位置,像這樣:

import matplotlib.pyplot as plt 
import matplotlib.gridspec as gridspec 
gs1 = gridspec.GridSpec(3,2) 
gs1.update(left=0.05, right=0.48, wspace=0.05) 
ax1 = plt.subplot(gs1[0, :]) 
ax2 = plt.subplot(gs1[1, :],sharex=ax1) 
ax3 = plt.subplot(gs1[2, :],sharex=ax1) 

gs2 = gridspec.GridSpec(1, 1) 
gs2.update(left=0.55, right=0.98, hspace=0.05) 
ax4 = plt.subplot(gs2[0,0]) 
#ax4.set_aspect('equal', adjustable='box') 
plt.setp(ax1.get_xticklabels(), visible=False) 
plt.setp(ax2.get_xticklabels(), visible=False) 
plt.show() 

我評論的代碼來獲得相等的方面比例爲ax4,突出顯示默認情況下,它填充整個可用空間。

alternative gridspec