具有不同子类别的分组类别条形图

时间:2021-03-27 11:48:51

标签: python matplotlib seaborn

我想为每个类别绘制一个包含不同子类别的条形图,我的数据框示例是:

G1    A    74
      B    16
      C    56
      D    8


G2    E    63
      F    71
      G    78
      H    115
      I    645

因为我的类别有不同的子类别,所以我对所有的解决方案都卡住了,我想从这个 other answer 的 javascript 中得到类似这个图的东西。

感谢您的帮助。

2 个答案:

答案 0 :(得分:0)

你需要蟒蛇或类似的东西来绘制它。但是你仍然可以使用这个:

G1[1] = A, 74
G1[2] = B, 16
#ect...
G2[1] = E, 63

然后对于 python 海龟,尝试使用字母的值并将其乘以某个值以使其具有条形。除了这两个技巧,我完全一无所知:)

答案 1 :(得分:0)

如果子类别总是不同,即不能存在元素(A,a)(B,a),您可以使用seaborn catplot

例如

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()

np.random.seed(42)
df = pd.DataFrame({
    'cat1': ['A', 'A', 'A', 'B', 'B'],
    'cat2': ['a', 'b', 'c', 'd', 'e'],
    'vals': np.random.random(5)
})

并在 x 轴以 cat2(子类别)和 cat1(主类别)作为色调与 dodge=False

绘图
sns.catplot(
    kind='bar',
    data=df,
    x='cat2', y='vals',
    hue='cat1', dodge=False
)

给予

enter image description here

相关问题