seaborn和pandas中带有色调的堆叠条[重复]

Posted

技术标签:

【中文标题】seaborn和pandas中带有色调的堆叠条[重复]【英文标题】:Stacked bars with hue in seaborn and pandas [duplicate] 【发布时间】:2020-07-20 22:59:24 【问题描述】:

我有一个如下所示的数据框:

df = pd.DataFrame(columns=["type", "App","Feature1", "Feature2","Feature3",
                           "Feature4","Feature5",
                           "Feature6","Feature7","Feature8"], 
                  data=[["type1", "SHA",0,0,1,5,1,0,1,0],
                        ["type2", "LHA",1,0,1,1,0,1,1,0],
                        ["type2", "FRA",1,0,2,1,1,0,1,1],
                        ["type1", "BRU",0,0,1,0,3,0,0,0],
                        ["type2", "PAR",0,1,1,4,1,0,1,0],
                        ["type2", "AER",0,0,1,1,0,1,1,0],
                        ["type1", "SHE",0,0,0,1,0,0,1,0]])

我想制作一个以type 为色调的堆叠条。也就是说,在 x 轴上我想要特征,对于每个特征我想要 2 个堆叠条,一个用于 type1,一个用于 type2

例如,here 他们解释了如何在删除列type 时使用 seaborn 制作堆积条形图。相反,我希望每个功能都有两个堆叠条。 注意App 的值是为type1type2 共享的

例如,如果我只是绘制对应于 type1 的堆叠条,我会得到:

我想制作一个堆积条形图,其中每个特征都有两个堆积条,一个用于 type1,另一个用于 type2

【问题讨论】:

每个类型的App 在您的示例中是不同的。您的预期输出是什么? @QuangHoang 在这种情况下,它是......但是,可能是应用程序在类型之间共享的情况。预期的输出是总共 8x2=16 个堆叠条,按特征分组(每组包含两个条,一个用于 type1 和一个用于 type2)。堆积条显示每个功能的“应用程序”数量,例如对于特征 3,类型 2 堆叠条将是 LHA 高度为 1 的条,FRA 高度为 2 条,PAR 高度为 1 条,AER 高度为 1 条。相反,对于特征 3,type1 堆叠条对于 SHA 是高度为 1 的条,对于 BRU 是高度为 1 的条 @QuangHoang 和每个应用栏的颜色会有所不同 @QuangHoang 我编辑了问题以发布图片 【参考方案1】:

我认为 seaborn 没有用于堆叠和分组的条形图的功能。但是您可以在 matplotlib 本身中手动完成。这是example。

【讨论】:

【参考方案2】:

我认为您正在寻找的是 melt 函数

d = df.drop(columns='App')
d = d.melt('type', var_name='a', value_name='b')

sns.barplot(x='a', y='b', data=d, hue='type')

【讨论】:

以上是关于seaborn和pandas中带有色调的堆叠条[重复]的主要内容,如果未能解决你的问题,请参考以下文章

每个色调的堆叠条计数图[重复]

Seaborn 堆叠直方图/条形图

位于子图中的多个计数图中的Seaborn堆叠条[重复]

Seaborn FacetGrid 条形图和色调

Python中带有上面Boxplot的直方图

数据可视化干货:使用pandas和seaborn制作炫酷图表(附代码)