计算每个色调堆积条形图

时间:2018-05-13 18:56:39

标签: python pandas bar-chart seaborn stacked-chart

我正在寻找一种根据" hue"绘制带有堆积条的计数图的有效方法。 标准色调行为是根据第二列的值将计数分成平行条,我正在寻找的是一种有效的方法来堆积色调条以便快速比较总数。

让我用泰坦尼克数据集中的一个例子来解释:

import pandas as pd
import numpy as np
import seaborn as sns
%matplotlib inline

df = sns.load_dataset('titanic')
sns.countplot(x='survived',hue='class',data=df)

使用countplot和hue给出标准的Seaborn行为 Standard Seaborn behavior with countplot and hue

我正在寻找的东西就像每个色调的叠条 Stacked bars per hue

获取最后一张图片我使用了以下代码

def aggregate(rows,columns,df):
    column_keys = df[columns].unique()
    row_keys = df[rows].unique()

    agg = { key : [ len(df[(df[rows]==value) & (df[columns]==key)]) for value in row_keys]
               for key in column_keys }

    aggdf = pd.DataFrame(agg,index = row_keys)
    aggdf.index.rename(rows,inplace=True)

    return aggdf

aggregate('survived','class',df).plot(kind='bar',stacked=True)

我确信有一些更有效的方法。 我知道seaborn并不是非常友好的堆积吧...所以我尝试用我的函数重新排列数据集并使用matplotlib,但我想还有一种更聪明的方法可以做到这一点。

非常感谢!

0 个答案:

没有答案