大熊猫情节用不同的变量为子图和颜色?

时间:2016-09-08 02:08:41

标签: python pandas matplotlib plot

目前此代码:

count_df = (df[['rank', 'name', 'variable', 'value']]
    .groupby(['rank', 'variable', 'name'])
    .agg('count')
    .unstack())
count_df .head()
#               value                          
# name           1lin STH_km27_lin ST_lin S_lin
# rank variable                                
# 1.0  NEE         24          115     33    28
#      Qg          23           54     14     9
#      Qh          37          124     11    28
# ...
count_df.plot(kind='bar')

告诉我这个情节:

bar plot with too much shit on it

subplots=True电话中使用.plot()获取此信息:

useless subplots

这是非常无用的,因为颜色映射到与子图分面相同的变量。有没有办法选择哪个列/索引用于子绘图,以便我仍然可以为每个namecount_df列标题)添加颜色,但每个{{1}的子图表},以便每个子图有一个每variable个条形图,按name/rank分组,并按rank着色?

1 个答案:

答案 0 :(得分:2)

槽糕。我怀疑这本身在熊猫中是不可行的,但我找到了一种在Seaborn中做到这一点的方法:

import seaborn as sns

cdf = (df[['rank', 'name', 'variable', 'value']]
           .groupby(['rank', 'variable', 'name'])
           .agg('count'))
sns.factorplot(x="rank", y="value", row="variable", hue="name",
               data=cdf.reset_index(), kind='bar')

导致:

barplot by rank, variable, and name

足够接近我的目的