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

Plotly条形图排序后固定'Total'条形至顶部或底部的方法

在Plotly Express横向条形图中排序后固定'Total'条形到顶部/底部

要实现排序后将'Total'条形固定到顶部或底部,无法直接依赖categoryorder='total ascending'的自动排序,需要手动自定义类别顺序,具体方案如下:

核心思路

先对除'Total'外的所有类别按原排序规则(总和升序)排列,再将'Total'插入到列表的开头(顶部)或结尾(底部),最后强制图表使用这个自定义顺序。

代码实现

1. 将'Total'移至顶部

import plotly.express as px

# 初始化横向条形图
fig = px.bar(sheet, y=sheet.index, x=rows, orientation='h')

# 分离非Total类别并按总和升序排序
non_total_cats = [cat for cat in sheet.index if cat != 'Total']
# 若rows是单数值列,可去掉.sum(),直接用sheet.loc[x, rows]
sorted_cats = sorted(non_total_cats, key=lambda x: sheet.loc[x, rows].sum())

# 自定义顺序:Total + 排序后的其他类别
custom_order = ['Total'] + sorted_cats

# 更新y轴使用自定义顺序
fig.update_layout(
    yaxis={
        'categoryorder': 'array',
        'categoryarray': custom_order
    }
)

fig.show()

2. 将'Total'移至底部

只需修改自定义顺序的拼接逻辑:

custom_order = sorted_cats + ['Total']

补充说明

  • categoryorder='array'会强制图表按照categoryarray指定的顺序渲染类别,完全覆盖自动排序逻辑。
  • 若需要降序排序非Total类别,只需在sorted函数中添加reverse=True参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 15:40:32