熊猫:如何对堆积的条形图进行分组?

时间:2020-01-26 21:00:04

标签: python pandas matplotlib seaborn

我正在尝试创建分组的堆积条形图。

当前,我具有以下DataFrame:

/* Bootstrap

hr {
    margin-top: 1rem;
    margin-bottom: 1rem;
    border: 0;
    border-top: 1px solid rgba(0,0,0,.1);
    box-sizing: content-box;
    height: 0;
    overflow: visible;
}

*/

.box1 {
  border-top: 1px solid rgba(255,0,0);
}

我希望每个 Parameter Total User 的条形分组在一起。

这是带有<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous"> <hr class="box1">的结果图表:

Stacked bar chart without grouping

条形图看起来很正确,但是如何为每个 Parameter 分别获取 Total User 的色条,参数之间最好有一些余量?

2 个答案:

答案 0 :(得分:1)

以下方法允许同时分组和堆叠钢筋。 首先,数据帧按JsonSerializationException排序。然后,将parameter, context从索引中删除,为每个context对创建新列。 最后,在彼此上方绘制三个条形图以可视化堆叠的条形图。

context, value

resulting bar plot

答案 1 :(得分:0)

这是一种方法:

import seaborn as sns
import matplotlib.pyplot as plt
sns.set(style="whitegrid")

# reshape you data - ensure no index is set initially
df1 = (df
      .set_index(['Parameter','Context'])
      .stack()
      .reset_index()
      .drop('level_2', 1)
      .rename(columns={0:'value'}))

print(df1.head())

   Parameter Context      value
0          1   Total  43.312347
1          1   Total   9.507902
2          1   Total   1.580367
3          2   Total  42.862649
4          2   Total   9.482205

sns.barplot(x = 'Parameter', 
            y = 'value', 
            hue='Context', 
            data=df1, 
            errwidth=0.1)

enter image description here

相关问题