Plotly如何为单个线段指定颜色 以按斜率着色抛物线为例
实现思路
Plotly 原生的单条 Scatter 轨迹无法直接为不同线段分配独立颜色,我们可以通过将整条曲线拆分为两两相邻点组成的独立线段轨迹的方式,为每一段线段绑定对应斜率的颜色值,最终实现需求。
完整可运行代码
import numpy as np from plotly import graph_objects as go x = np.linspace(-1, 1, 101) y = x**2 # 计算每段线段对应的斜率 dy = (x[1:] + x[:-1]) fig = go.Figure() # 遍历每一段线段,单独设置对应颜色 for i in range(len(dy)): fig.add_scatter( x=[x[i], x[i+1]], y=[y[i], y[i+1]], mode='lines', line=dict( color=dy[i], colorscale='RdBu_r', # 可根据需求自定义色阶 cmin=dy.min(), cmax=dy.max() ), showlegend=False # 隐藏单段线段的图例,避免重复展示 ) # 添加统一的颜色条,说明斜率与颜色的对应关系 fig.add_scatter( x=[None], y=[None], mode='markers', marker=dict( colorscale='RdBu_r', cmin=dy.min(), cmax=dy.max(), colorbar=dict(title='斜率大小'), color=[None] ), showlegend=False ) # 调整布局样式 fig.update_layout(title='抛物线线段颜色对应斜率大小', xaxis_title='x', yaxis_title='y') fig.show()
补充说明
如果你的数据点数量超过1000,循环添加轨迹可能会有性能损耗,此时可以改用go.Scattergl替换普通go.Scatter开启硬件加速渲染,性能会有明显提升。
内容的提问来源于stack exchange,提问作者MauiMuc
相关产品推荐
相关产品推荐

