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

如何在Python的Plotly直方图中修改图例名称(泰坦尼克数据集场景)

修改Plotly直方图图例标签的有效方法

你的问题在于labels参数的作用并不是替换分类变量的取值名称——它主要用来修改列名或轴标签的显示文本,比如把x轴标题从"Survived"改成自定义名称。要把图例里的0和1换成"Didn't Survive"和"Survived",有两种简单可行的方法:

方法1:预处理数据(推荐)

直接将原始数据中Survived列的数值替换为对应的字符串,这样绘图时图例会自动显示正确的名称:

# 先替换数据中的值
train_df['Survived'] = train_df['Survived'].map({0: "Didn't Survive", 1: "Survived"})

# 再绘制直方图
survivor = px.histogram(data_frame=train_df, x="Survived", title="Survivor Data")
survivor.update_layout(bargap=0.6)
survivor.show()

这种方法的好处是数据本身的语义更清晰,后续如果做其他可视化或分析也能直接使用处理后的列。

方法2:直接修改绘图对象的trace名称

如果不想修改原始数据,可以在绘图后遍历每个trace,替换它们的名称:

survivor = px.histogram(data_frame=train_df, x="Survived", title="Survivor Data")
survivor.update_layout(bargap=0.6)

# 遍历每个trace,替换名称
survivor.for_each_trace(lambda trace: trace.update(
    name={"0": "Didn't Survive", "1": "Survived"}[trace.name]
))

survivor.show()

这里利用for_each_trace方法遍历直方图的每个分组(对应0和1),通过字典映射把原始的"0"和"1"替换成目标文本。

为什么你的原始方法无效?

再补充说明下:Plotly Express的labels参数语法是labels={"原始列名": "自定义显示名"},比如你想把x轴标题改成"Survival Status",可以写labels={"Survived": "Survival Status"}——它不会作用于列内的具体取值,所以你之前的写法无法修改图例里的分类名称。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.28 23:12:30