gpt4 book ai didi

python - Seaborn - 带 Bottom 参数的分组条形图

转载 作者:行者123 更新时间:2023-12-05 06:12:27 26 4
gpt4 key购买 nike

我想使用 seaborn 创建一个条形图(垂直),每个 x 轴标签将有 n 个(示例中为 2 个)不同颜色的条形 - 但每个条形都会 float - 换句话说,它使用 matplotlib bar bottom参数

这在没有底部的情况下工作如下,但失败了

import pandas as pd
import seaborn as sns

d = {'month':['202001','202002','202003','202001','202002','202003'],
'range' : [0.94,4.47,0.97,4.70,0.98,1.23],
'bottom' : [8.59,17.05,8.35,17.78,8.32,5.67],
'group' : ['a','a','a','b','b','b']
}
df = pd.DataFrame(data=d)
sns.barplot(data=df,x = "month", y = "range",hue='group')

(抱歉,由于某些原因我无法上传图片,我认为该服务已阻止我的工作,但代码运行时会显示它)

但是当我添加底部参数时它失败了

sns.barplot(data=df,x = "month", y = "range",hue='group',bottom='bottom')

我感谢您的帮助,也许还有它失败原因的解释,因为从逻辑上讲它应该有效

条形表示某个度量的预测范围,我想将它们显示为矩形

最佳答案

sns 本身不处理 bottom,所以它被传递给 plt.bar。但是 plt.bar 要求 bottomxy 具有相同的形状/大小,但事实并非如此当数据通过 sns 传递时。

让我们尝试使用 pandas plot 函数:

to_plot = df.pivot(index='month',columns='group')

fig,ax = plt.subplots()
to_plot['range'].add(to_plot['bottom']).plot.bar(ax=ax)

# cover the bars up to `bottom`
# replace `w` with background color of your choice
to_plot['bottom'].plot.bar(ax=ax, color='w', legend=None)

输出:

enter image description here

sns.set()to_plot = df.pivot(index='month',columns='group')

另一种允许特定样式的方法:

# set sns plot style
sns.set()

fig,ax = plt.subplots()
for i,(label,r) in enumerate(to_plot.iterrows()):
plt.bar([i-0.1,i+0.1],r['range'],
bottom=r['bottom'],
color=['C0','C1'],
width=0.2)

plt.xticks(np.arange(len(to_plot)), to_plot.index);

输出:

enter image description here

关于python - Seaborn - 带 Bottom 参数的分组条形图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63622491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com