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

Plotly中为光学实验线图添加水平波长色条图例的技术问询

为可见光波长信号线图添加底部水平色条的解决方案

因为Plotly的graph_objects.Scatter线条模式无法直接绑定对应X轴波长的静态色条,我们可以通过添加隐藏散点图绑定coloraxis的方式实现需求,具体步骤如下:

核心思路

用一个完全透明的散点图(opacity=0)关联波长与颜色映射,以此触发coloraxis并在底部显示水平色条,主信号线图保持原有样式即可。

完整实现代码

import plotly.graph_objects as go
import pandas as pd

# 示例数据(替换为你的实际signal数据)
signal = pd.DataFrame({
    'wavelength': [380, 450, 500, 550, 600, 650, 760],
    'intensity': [0.2, 0.5, 0.8, 0.9, 0.7, 0.4, 0.1]
})

fig = go.Figure()

# 1. 添加你的主信号线图
fig.add_trace(
    go.Scatter(
        x=signal.wavelength,
        y=signal.intensity,
        mode='lines',
        line_shape='spline',
        text=signal.wavelength,
        line=dict(color='black')  # 主线条颜色可自定义
    )
)

# 2. 添加隐藏散点图,用于绑定coloraxis和波长的颜色映射
fig.add_trace(
    go.Scatter(
        x=signal.wavelength,
        y=[0]*len(signal),  # y值不影响,设为全0即可
        mode='markers',
        marker=dict(
            color=signal.wavelength,  # 用波长值映射颜色
            colorscale='Rainbow',  # 可见光渐变推荐用Rainbow或自定义色阶
            cmin=380,  # 可见光波长下限
            cmax=760,  # 可见光波长上限
            showscale=True  # 触发色条显示
        ),
        opacity=0,  # 隐藏散点本身
        hoverinfo='none'  # 关闭悬停提示
    )
)

# 3. 配置coloraxis和布局,将色条设为水平并置于底部
fig.update_layout(
    coloraxis_colorbar=dict(
        orientation='h',  # 水平方向
        y=-0.2,  # 调整y轴位置,将色条放在图下方
        title='波长(nm)',  # 色条标题
        tickvals=[380, 450, 500, 550, 600, 650, 760],  # 自定义刻度值
        ticktext=['380', '450', '500', '550', '600', '650', '760']
    ),
    yaxis=dict(title='强度'),
    xaxis=dict(title='波长(nm)'),
    margin=dict(b=100)  # 增加底部边距,避免色条被截断
)

fig.show()

关键细节说明

  • 自定义色阶:如果默认Rainbow不符合需求,可以手动定义可见光渐变,比如:
    custom_colorscale = [[0, 'red'], [0.2, 'orange'], [0.4, 'yellow'], [0.6, 'green'], [0.8, 'blue'], [1, 'violet']]
    
    将其替换代码中的'Rainbow'即可
  • 色条位置微调:通过coloraxis_colorbar.y参数控制垂直位置,margin.b调整底部边距避免截断
  • 隐藏散点的作用:Plotly的色条必须绑定到某个trace的marker.color属性,线条模式无法直接生成对应X轴维度的色条,因此用透明散点作为"载体"触发coloraxis

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 04:15:09