是否可以按层次标记matplotlib(pyplot)条形图?

时间:2012-09-14 14:59:21

标签: python matplotlib pandas

我已设法使用matplotlib.pyplot制作以下条形图。

enter image description here

该图来自下面打印的聚合PANDAS DataFrame。请注意,条形图中的每个条形对应于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组的左半部分对应LD因子的Local级别,依此类推......

可以这样做吗?

修改

我想我应该澄清一下我想要的东西。我希望有几个标签,从最常见(Group)到最具体(Attn),类似于上面DataFrame左侧4列的组织。

1 个答案:

答案 0 :(得分:5)

在master上实现了这个(我使用了'mean'的随机数据),请参见底部的图片。 如果您不想升级,也可以手动设置:

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