【问题标题】:Stacked bars with hue in seaborn and pandas [duplicate]seaborn和pandas中带有色调的堆叠条[重复]
【发布时间】: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 我编辑了问题以发布图片

标签: pandas matplotlib seaborn stacked-chart


【解决方案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')
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-23
      • 2022-01-08
      • 1970-01-01
      • 2016-07-11
      • 2019-12-29
      • 1970-01-01
      • 2021-11-16
      • 2016-03-11
      相关资源
      最近更新 更多