2014-09-10 67 views
1

我正在做一個多面板情節使用gridspec,但我有幾個問題。我希望每一行共享一個不同的y軸,並且每列都共享一個不同的x軸。或者換句話說,每行共享x和每列共享y。我也想爲每個這些軸添加一個標籤。這裏是(我想減去軸標籤)就是我與取得的代碼一起談論一個例子:但是因爲我使用subplot2grid我不能確切地使用這個實現 sample axis sharing http://matplotlib.org/_images/subplots_demo_04.png蟒蛇gridspec,麻煩分享x軸和y軸

# row and column sharing 
f, ((ax1, ax2), (ax3, ax4)) = plt.subplots(2, 2, sharex='col', sharey='row') 
ax1.plot(x, y) 
ax1.set_title('Sharing x per column, y per row') 
ax2.scatter(x, y) 
ax3.scatter(x, 2 * y ** 2 - 1, color='r') 
ax4.plot(x, 2 * y ** 2 - 1, color='r') 

因爲我需要選擇每個地塊的具體位置和尺寸。我試過在subplot2grid調用中使用sharex = ax1和sharey = ax1這個東西無濟於事。這裏是我的代碼的相關部分:

ax1 = plt.subplot2grid((8,8), (2,0), colspan=2, rowspan=2) 
ax2 = plt.subplot2grid((8,8), (4,0), colspan=2, rowspan=2) 
ax3 = plt.subplot2grid((8,8), (6,0), colspan=2, rowspan=2) 
ax4 = plt.subplot2grid((8,8), (2,2), colspan=2, rowspan=2) 
ax5 = plt.subplot2grid((8,8), (4,2), colspan=2, rowspan=2) 
ax6 = plt.subplot2grid((8,8), (2,4), colspan=2, rowspan=2) 
ax7 = plt.subplot2grid((8,8), (1,0), colspan=2, rowspan=1) 
ax8 = plt.subplot2grid((8,8), (1,2), colspan=2, rowspan=1) 
ax9 = plt.subplot2grid((8,8), (1,4), colspan=2, rowspan=1) 
ax10 = plt.subplot2grid((8,8), (2,6), colspan=1, rowspan=2) 
+0

在ax2或其他任何調用的定義中使用(例如)'sharex = ax1'和/或'sharey = ax1'應該可以工作(適用於我)。 – Ajean 2014-09-13 01:09:50

回答

0

相較於正常的次要情節,使用sharex/sharey=axsubplot2gridGridSpec次要情節不僅將共享的範圍內,而且蜱。

要分別配置每個子圖的刻度,您需要plt.setp(ax.get_xticklabels(), visible=False),有關更多詳細信息,請參見GridSpec with shared axes in Python