2012-11-23 81 views
5

用顏色條繪製圖形,例如matplotlib圖庫的ellipse collection,我試圖理解圖形的幾何圖形。如果我在源代碼中(而不是plt.show())添加以下代碼:matplotlib中的顏色條的幾何圖形

cc=plt.gcf().get_children() 
print(cc[1].get_geometry()) 
print(cc[2].get_geometry()) 

我得到

(1, 2, 1) 
(3, 1, 2) 

我瞭解的第一個 - 1列,兩列,圖表第一(大概在第二個是彩條),但我不明白第二個,我預計會是(1,2,2)。這些值對應什麼?

編輯:看來cc中的元素不具有相同的座標軸,這可以解釋這些差異。不知何故,我仍然與報道的幾何形狀混淆。

+0

我的輸出是不同的;我得到'(1,1,1)',第二個'print'語句給出了一個異常,'AttributeError:'Axes的對象沒有屬性'get_geometry'。 – egpbos

回答

2

發生了什麼事,當你調用colorbaruse_gridspec默認爲True然後讓到matplotlib.colorbar.make_axes_gridspec一個電話,然後創建一個1×2格舉行的情節和CBAR軸然後再CBAR軸本身實際上是一個由1個格3具有其長寬比在matplotlib.colorbar.make_axes_gridspec這使得該調整發生

關鍵行是

gs2 = gs_from_sp_spec(3, 1, subplot_spec=gs[1], hspace=0., 
         height_ratios=wh_ratios) 

因爲wh_ratios == [0.0, 1.0, 0.0]默認這樣另外兩個副區上方和下方是中間圖的大小爲0次。

我已經把我所做的事情弄清楚了an IPython notebook

+0

我注意到,如果我給'colorbar()'函數調用'ax'參數:'plt.colorbar(sth,ax = ax)','ax'的幾何體將被改變。 ax被創建爲'ax = fig.add_subplot(2,3,4)',那麼在顏色條繪製其幾何圖形後總會變成「(2,1,1)」,我認爲(2,1,1)是情節本身,和(2,1,2)是彩條。如果我創建了一個新的'ax2 = fig.add_subplot(2,3,4)',那麼ax2的幾何體又是(2,1,1)。這可以被視爲一個錯誤? – Jason