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

Plotly修改图例标签及对柱状图数值进行聚合统计的实现方法

实现方案

你需要的两个需求可以按以下步骤修改代码实现:

1. 按年份对每个OPINION取值的总得分求和

你现在的代码没有指定聚合规则,所以输出结果不符合预期。只需要在px.bar参数中新增histfunc='sum',即可自动按「年份+OPINION类别」分组对OPINION值求和。

2. 自定义图例标签

可以先创建OPINION取值到自定义名称的映射字典,直接替换数据集里的OPINION值即可,同步更新颜色映射的键保证颜色对应正确。如果不想修改原始数据集,也可以在绘图后通过遍历trace批量修改图例名称。


完整修改后代码

import plotly.express as px

# 定义OPINION取值到自定义标签的映射
opinion_label_map = {
    1: "Very bad",
    2: "Bad",
    3: "Neutral",
    4: "Good",
    5: "Very good",
    "inconnu": "Unknown"
}
# 替换数据集中的OPINION值为自定义标签
dftotal['OPINION'] = dftotal['OPINION'].map(opinion_label_map)

# 同步更新颜色映射规则
color_discrete_map = {
    "Very good": "green",
    "Good": "lightgreen",
    "Neutral": "yellow",
    "Bad": "orange",
    "Very bad": "red",
    "Unknown": "grey"
}

fig = px.bar(
    data_frame=dftotal, 
    x="YEAR", 
    y="OPINION",
    title="Score des opinions par années", 
    color="OPINION", 
    width=1300, 
    height=700, 
    template='plotly_dark',
    color_discrete_map=color_discrete_map,
    histfunc='sum' # 核心参数:实现分组求和
)

fig.update_layout(title_x=0.5)
fig.show()

不修改原始数据集的图例修改方案

如果你不想改动原始的dftotal数据,可以在绘图后加上以下代码批量修改图例名称:

opinion_name_map = {
    '1': 'Very bad',
    '2': 'Bad',
    '3': 'Neutral',
    '4': 'Good',
    '5': 'Very good',
    'inconnu': 'Unknown'
}
fig.for_each_trace(lambda t: t.update(name = opinion_name_map[t.name]))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 22:48:01