我正在尝试创建分组的堆积条形图。
当前,我具有以下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">
的结果图表:
条形图看起来很正确,但是如何为每个 Parameter 分别获取 Total 和 User 的色条,参数之间最好有一些余量?
答案 0 :(得分:1)
以下方法允许同时分组和堆叠钢筋。
首先,数据帧按JsonSerializationException
排序。然后,将parameter, context
从索引中删除,为每个context
对创建新列。
最后,在彼此上方绘制三个条形图以可视化堆叠的条形图。
context, value
答案 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)