如何调整Seaborn displot中堆叠柱状图的柱宽?
如何调整Seaborn displot堆叠柱状图的柱子宽度?
问题描述
我正在使用Seaborn的displot绘制堆叠柱状图,代码如下:
g = sns.displot(data=df, x='collection_year', hue='WB_Income group', multiple='stack',col="ena_species",col_wrap=6,facet_kws={'sharey': False, 'sharex': False})
输出效果如下:
请问如何增加这些柱状图的柱子宽度?
解决方法
displot是Seaborn的figure级函数,绘制柱状图时底层调用的是histplot,可以通过传递对应参数调整柱子宽度,分两种场景处理:
场景1:x轴为离散分类变量(如年份被当作类别处理)
通过hist_kws参数给底层histplot传递width参数,直接控制柱子宽度:
g = sns.displot( data=df, x='collection_year', hue='WB_Income group', multiple='stack', col="ena_species", col_wrap=6, facet_kws={'sharey': False, 'sharex': False}, hist_kws={'width': 0.8} # 调整数值改变宽度,0-1之间取值,值越大柱子越宽 )
注:
width值超过1可能会导致相邻柱子重叠,建议根据实际展示效果微调。
场景2:x轴为连续数值变量
直接设置binwidth参数,该参数定义每个柱子覆盖的x轴范围,值越大柱子越宽:
g = sns.displot( data=df, x='collection_year', hue='WB_Income group', multiple='stack', col="ena_species", col_wrap=6, facet_kws={'sharey': False, 'sharex': False}, binwidth=1.5 # 单位与x轴一致,按需调整 )
内容的提问来源于stack exchange,提问作者Julio Diaz
相关产品推荐
相关产品推荐

