2012-09-14 26 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

相关问题