【发布时间】:2020-03-05 23:18:30
【问题描述】:
我正在尝试制作堆叠条形图,但使用seaborn 似乎非常棘手。我有这些数据:
x = pd.DataFrame({"Groups" : np.random.choice(["Group1", "Group2", "Group3"], 100),
"Sex" : np.random.choice(["Masculine", "Femenine"], 100)})
x = x.groupby(["Groups", "Sex"]).size().reset_index(name="count")
x["percent (%)"] = round(x.groupby("Groups").transform(lambda x: x/sum(x))*100,1)
x
我有这个情节:
sns.barplot(x="Groups", y="percent (%)", hue="Sex", data=x);
但是,我认为每个组都有一个堆叠条,y 轴从 0 到 1,以及一个总计的“group4”。当我尝试绘制像 here 这样的限制时,它给了我一个错误,因为这个 seaborn 图表不允许它,而且我发现 seaborn 的每个堆叠条形图每个组都有一个列,每个组的值在他各自的列,我将所有组放在一列中。有什么想法吗?
我正在寻找一个简单的解决方案(有或没有 seaborn)而不改变数据的结构(除了添加“总组”,但我不知道将总数添加到数据中是否更容易,或计算图中的总数)。
【问题讨论】:
-
seaborn 的创造者以自以为是而著称。 Here 是他对堆叠条形图的看法。
标签: python pandas matplotlib seaborn