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

如何自定义Plotly箱线图的图例排序顺序,支持重命名为月份名称?

Plotly箱线图图例顺序调整与月份重命名方案

问题根源:Plotly默认会将字符串类型的月份字段按字典序排序,导致出现1、10、11、12、2这类乱序,仅需指定分类顺序即可解决,无需大幅修改原有绘图代码。


方案1:仅调整图例为1-12的数字顺序

在调用绘图函数前,先将数据中的月份列转为有序分类类型:

import pandas as pd
# 替换下方`month`为你实际的月份列名
data['month'] = pd.Categorical(
    data['month'], 
    categories=[str(i) for i in range(1, 13)], 
    ordered=True
)

处理完成后再调用make_box_plot函数绘图即可,图例和X轴刻度都会自动遵循1到12的顺序排列。


方案2:同时将图例重命名为Jan-Dec月份缩写

先对数据做预处理,完成映射和有序分类设置:

import pandas as pd
# 月份映射字典
month_mapping = {
    '1': 'Jan', '2': 'Feb', '3': 'Mar', '4': 'Apr', '5': 'May', '6': 'Jun',
    '7': 'Jul', '8': 'Aug', '9': 'Sep', '10': 'Oct', '11': 'Nov', '12': 'Dec'
}
# 替换下方`month`为你实际的月份列名
# 第一步:将数字月份映射为月份缩写
data['month'] = data['month'].map(month_mapping)
# 第二步:设置为有序分类,保证顺序正确
data['month'] = pd.Categorical(
    data['month'], 
    categories=list(month_mapping.values()), 
    ordered=True
)

处理完成后调用原有绘图函数即可,图例和X轴会自动按Jan到Dec的顺序展示。


可选:不修改原始数据的调整方法

如果你不想改动原始数据集,可以直接在绘图函数内部更新图例配置,在fig.update_layout代码段前添加如下内容:

# 按1-12顺序定义新的图例名称
new_names = {str(i): month for i, month in enumerate(
    ['Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'], 1
)}
# 逐个更新图例名称
for trace in fig.data:
    trace.name = new_names[trace.name]
# 调整图例排列顺序为正常顺序,替换原有的grouped配置
fig.update_layout(legend={'traceorder': 'normal'})

该方法会直接修改生成的图表对象,不会影响原始数据。


内容的提问来源于stack exchange,提问作者David L.E

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 03:06:03