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

Plotly:如何修改plotly express堆叠条形图的图例元素名称?

问题描述

我使用Plotly官网提供的示例代码如下:

import plotly.express as px
long_df = px.data.medals_long()
fig = px.bar(long_df, x="nation", y="count", color="medal", title="Long-Form Input")
fig.show()

运行代码后生成的图表如下所示:
示例图表
请问如何修改图例,将其中的gold、silver、bronze分别替换为first、second、third?如果需要替换为中文标签,修改方法同理。

解决方案

有两种常用实现方式,可根据实际场景选择:

方法1:修改原始数据集分类值

直接替换数据集中medal列的取值,绘图时图例自动适配新标签,适合不需要保留原始分类值的场景,示例代码如下:

import plotly.express as px

long_df = px.data.medals_long()
# 替换标签,需要中文的话修改对应值为「金牌」「银牌」「铜牌」即可
long_df["medal"] = long_df["medal"].replace({
    "gold": "first",
    "silver": "second",
    "bronze": "third"
})
fig = px.bar(long_df, x="nation", y="count", color="medal", title="Long-Form Input")
fig.show()

方法2:不改动原始数据,直接修改图例文本

如果需要保留原始数据集的标签,可以直接更新图表轨迹的显示名称,仅修改图例展示内容,示例代码如下:

import plotly.express as px

long_df = px.data.medals_long()
fig = px.bar(long_df, x="nation", y="count", color="medal", title="Long-Form Input")

# 定义标签映射规则,需要中文修改对应值即可
name_mapping = {
    "gold": "first",
    "silver": "second",
    "bronze": "third"
}
# 遍历所有轨迹更新显示名称
for trace in fig.data:
    trace.name = name_mapping[trace.name]

fig.show()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 14:09:03