2012-09-14 71 views
4

我已經設法使用matplotlib.pyplot製作下面的條形圖。是否可以分層標籤matplotlib(pyplot)條形圖?

enter image description here

情節來自聚集PANDAS數據幀,下面打印。請注意,條形圖中的每個條對應於mean列中的值。另外請注意,值爲而非爲零,但當浮點數非常小時,PANDAS輸出0-0

Group Local Global Attn mean 
ASub LD GD  Attn -0 
        Dist -0 
      GS  Attn -0 
        Dist -0 
     LS GD  Attn -0 
        Dist -0 
      GS  Attn -0 
        Dist -0 
DSub LD GD  Attn -0 
        Dist  0 
      GS  Attn -0 
        Dist -0 
     LS GD  Attn -0 
        Dist -0 
      GS  Attn -0 
        Dist -0 

我想以對應於上面標籤的方式分層標註我的柱狀圖的x軸。換句話說,x軸的左半部分對應於ASub組。 ASub組的左半部分對應於Local因子的LD級別,依此類推...

可以這樣做嗎?

編輯:

我想我也許應該澄清正是我想要的。我希望有幾個標籤,從最一般的(組)到最具體的(Attn),類似於上面DataFrame左邊4列的組織。

+0

另一個大熊貓用戶提出了一些這方面的想法也:HTTP ://github.com/pydata/pandas/issues/2088 –

回答

4

在主人這實現(我用'意味着'的隨機數據),見底部的圖像。 如果您不想升級你也可以手動設置:

In [143]: ax = df.plot(kind='bar') 

In [144]: ax.set_xticklabels(['|'.join(t) for t in df.index]) 

enter image description here

編輯:

In [167]: ax = df.plot(kind='bar') 

In [168]: ax.set_xticklabels(df.index.format(names=False)) 

enter image description here

+0

這是一個很好的「計劃B」,但它並不真正對應我想要做的事情。我有興趣從上面的熊貓DataFrame打印輸出中再現樹狀標籤結構,這樣就可以清楚地看到'Local'因子是'Group'因子的一個子集,等等。任何方式來做到這一點? – blz

+0

請參閱我的答案中的編輯。 –

+0

我不知道你是否收到我以前的任何評論,但你的代碼有效 - 我只是很傻=)。無論如何,非常感謝!太棒了! – blz

相關問題