You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python seaborn库histplot堆叠柱状图如何调整堆叠顺序且保持颜色对应

seaborn histplot堆叠顺序调整方案

你可以通过固定颜色映射+指定hue_order参数实现需求,修改后的完整代码如下:

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


group = np.repeat(['G1', 'G2'], 4)
value = np.array(['1', '2', '3', '4', '1', '2', '3', '4'])
percentage = np.array([20, 10, 40, 30, 50, 25, 20, 5])
stacked = pd.DataFrame({'Group':group, 'Value':value, 'Percentage':percentage})

# 预先为每个Value值固定对应颜色,避免调整顺序后颜色错乱
value_unique = stacked['Value'].unique()
fixed_palette = dict(zip(value_unique, sns.color_palette('colorblind', len(value_unique))))

# 新增hue_order参数指定堆叠顺序:按1→2→3→4从底部到顶部堆叠
sns.histplot(stacked, x = 'Group', hue = 'Value', weights = 'Percentage', 
             multiple = 'stack', palette = fixed_palette, shrink = 0.75,
             hue_order = ['1', '2', '3', '4'])

# 图例保持原有反转逻辑,和堆叠从上到下的顺序一一对应
plt.legend(labels = value_unique[::-1], bbox_to_anchor = (1, 1), fontsize = 8)
plt.show()

关键修改点说明

  • 先构建Value到颜色的映射字典,保证不管堆叠顺序怎么调整,每个Value对应的颜色和原设置完全一致
  • 给histplot添加hue_order参数,参数值按你需要的堆叠顺序从底部到顶部排列,此处设置为['1', '2', '3', '4']即可实现1在最底部、4在最顶部的效果
  • 图例部分保留原有反转逻辑,保证图例从上到下的条目和图表中从上到下的堆叠区块一一对应

内容的提问来源于stack exchange,提问作者RamsesII

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 06:15:00