绘制Pandas多级索引柱状图

30
如何将Python Pandas的多索引数据帧绘制成带有组标签的条形图?是否有任何绘图库直接支持这一功能?这个SO post展示了使用matplotlib的自定义解决方案,但是否有直接支持的方法?
以一个例子来说明:
quarter  company
Q1       Blue       100
         Green      300
Q2       Blue       200
         Green      350
Q3       Blue       300
         Green      400
Q4       Blue       400
         Green      450
Name: count, dtype: int64

...这个数据框能够像这样这样带有分组标签的绘图吗?


Goodword 下面引用的 SO 帖子 解决了这个问题。 - rbinnun
1个回答

67
import pandas as pd

data = pd.DataFrame([
        ('Q1','Blue',100),
        ('Q1','Green',300),
        ('Q2','Blue',200),
        ('Q2','Green',350),
        ('Q3','Blue',300),
        ('Q3','Green',400),
        ('Q4','Blue',400),
        ('Q4','Green',450),
    ], 
    columns=['quarter', 'company', 'value']
)
data = data.set_index(['quarter', 'company']).value

data.unstack().plot(kind='bar', stacked=True)

multiindex的堆积条形图

如果您不想要堆叠条形图:

data.unstack().plot(kind='bar')

非堆叠条形图


1
谢谢@Goodword,标签也可以分组吗?就像这张图表一样? - rbinnun
当然可以。只是不要传递 stacked=True 参数。可以尝试这个:data.unstack().plot(kind='bar') - Goodword
1
我现在看到你发送的图像中的标签与我的更正有些不同。这篇SO帖子应该能帮助你解决这些标签问题。 - Goodword
谢谢@Goodword,你引用的SO帖子解决了我的问题。 - rbinnun

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接