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

如何修改Plotly图表图例,尤其是替换图例中的下划线?

解决Plotly图例下划线替换问题

首先你代码里存在一个明显的列名不匹配问题:你的DataFrame是湿度相关列(humidity_min等),但代码里的y参数和labels字典用的是温度列名(temperature_min等),这会导致图例修改根本无法对应到正确的系列。

针对图例下划线替换,有两种直接有效的方法:

方法一:使用Plotly Express的names参数

names参数可以直接指定每个数据系列在图例中显示的名称,完美匹配你的需求:

# 针对湿度数据构建正确的名称映射
names_map = {
    'humidity_min': 'Humidity min',
    'humidity_mean': 'Humidity mean',
    'humidity_max': 'Humidity max'
}

fig = px.line(df, x='date', y=['humidity_min', 'humidity_mean', 'humidity_max'], 
              title='Humidity',
              color_discrete_sequence=['red', 'green', 'blue'],
              labels={'date': 'Date'},  # labels用于轴/hover标签
              names=names_map  # names专门控制图例显示文本
              )
fig.update_traces(mode='markers+lines')
fig.update_layout(xaxis=dict(tickformat="%B-%Y"), 
                  template="plotly_dark")
fig.show()

方法二:遍历图表轨迹直接修改名称

如果需要批量替换下划线(比如不想手动写每个映射),可以遍历fig.data中的每个轨迹,将名称里的下划线替换为空格:

fig = px.line(df, x='date', y=['humidity_min', 'humidity_mean', 'humidity_max'], 
              title='Humidity',
              color_discrete_sequence=['red', 'green', 'blue'],
              labels={'date': 'Date'}
              )

# 批量替换所有图例名称的下划线
for trace in fig.data:
    trace.name = trace.name.replace('_', ' ')

fig.update_traces(mode='markers+lines')
fig.update_layout(xaxis=dict(tickformat="%B-%Y"), 
                  template="plotly_dark")
fig.show()

为什么你之前的代码没生效?

  1. 列名不匹配:你用了温度列名,但DataFrame里是湿度数据,导致labels字典无法匹配到对应的系列。
  2. labels参数的作用范围:它主要用于修改坐标轴标签、悬停提示框里的标签,而图例文本默认由数据系列的name属性控制,用names参数或直接修改trace.name才是更直接的图例文本修改方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 19:42:35