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

添加第二个Y轴后Plotly中温度Trace不显示问题求助

解决Plotly双Y轴下温度Trace不显示的思路

碰到过不少朋友在Plotly里加双Y轴时踩这个坑,后台数据都在但其中一个trace就是不出来,给你梳理几个最常见的排查方向:

1. 确认Trace的Y轴绑定是否正确

这是最容易忽略的点!当你添加第二个Y轴后,必须明确给每个Trace指定对应的Y轴:

  • 温度Trace(trace1)如果用左侧默认Y轴,要设置yaxis: 'y'
  • 湿度Trace要绑定右侧新Y轴,设置yaxis: 'y2'

如果没指定,Plotly可能会默认把两个Trace都绑定到其中一个轴上,而如果两个数据的数值范围差异大,就会导致其中一个被“压缩”到看不见。

举个正确配置的代码片段(Python为例):

# 温度Trace绑定左侧Y轴
trace_temp = go.Scatter(
    x=time_data,
    y=temperature_data,
    name="Temperature (degC)",
    yaxis='y'  # 明确指定轴
)

# 湿度Trace绑定右侧Y轴
trace_humid = go.Scatter(
    x=time_data,
    y=humidity_data,
    name="Relative Humidity",
    yaxis='y2'  # 明确指定第二个轴
)

2. 检查布局中第二个Y轴的overlaying配置

右侧Y轴必须设置overlaying='y',否则Plotly会把两个轴分开布局,其中一个Trace会被挤到图表外面(后台数据存在但视觉上看不到)。正确的布局配置应该是这样:

layout = go.Layout(
    yaxis=dict(
        title="Temperature (degC)",
        side="left"
    ),
    yaxis2=dict(
        title="Relative Humidity",
        side="right",
        overlaying='y',  # 关键:叠加到左侧Y轴上
        showgrid=False  # 可选,避免网格线重叠影响视觉
    )
)

3. 验证数据格式与范围

  • 确保温度数据是数值类型(int/float),如果是采集到的字符串格式(比如"25.3"),一定要先转换成数值再传入Trace,否则Plotly无法正确绘制。
  • 检查两个数据的数值范围:如果温度范围是20-30,湿度是40-60,这种差异不大还好;但如果其中一个数据范围特别极端(比如温度0-100,湿度0-10),可能其中一个Trace会被压缩成一条线贴在轴上,看起来像没显示。可以手动设置轴的range属性来调整:
    yaxis=dict(
        title="Temperature (degC)",
        side="left",
        range=[15, 35]  # 手动限定温度范围
    )
    

4. 检查Trace的可见性与Plotly版本

  • 不小心设置了visible: False也会导致Trace不显示,确认你的trace1的visible属性是True(默认是True,但可能误改)。
  • 旧版本的Plotly在双Y轴的配置上存在一些bug,尝试升级到最新稳定版:
    pip install plotly --upgrade  # Python环境
    npm install plotly.js --save  # JavaScript环境
    

按上面的步骤逐一排查,应该能让你的温度Trace正常显示出来!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:13:40