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
的值是为type1
和type2
共享的
例如,如果我只是绘制对应于 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中带有色调的堆叠条[重复]的主要内容,如果未能解决你的问题,请参考以下文章