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

如何使用matplotlib.pyplot绘制带参数化颜色映射的2D折线图

Matplotlib实现2D折线颜色随参数动态变化方案

可以实现该效果,matplotlib原生plot方法不支持直接为单条折线的不同分段设置差异化颜色,我们通过LineCollection组件即可实现按t值动态映射颜色的需求,刚好匹配你0对应蓝色、1对应红色的要求。

完整可运行代码

import numpy as np
import matplotlib.pyplot as plt
from matplotlib.collections import LineCollection
from matplotlib.colors import Normalize

# 生成原始数据
t = np.linspace(0, 200, 200)
x = np.array([np.cos(i/(6.28)) for i in range(-100, 100)])
y = np.array([np.sin(i/(6.28)) for i in range(-100, 100)])

# 将连续折线拆分为逐段线段
points = np.array([x, y]).T.reshape(-1, 1, 2)
segments = np.concatenate([points[:-1], points[1:]], axis=1)

# 配置颜色映射:t值归一化到0-1,coolwarm色卡刚好0对应蓝色、1对应红色
norm = Normalize(vmin=t.min(), vmax=t.max())
cmap = plt.cm.coolwarm

# 创建颜色动态变化的线段集合
lc = LineCollection(segments, cmap=cmap, norm=norm)
lc.set_array(t) # 传入t值作为颜色映射的依据
lc.set_linewidth(2) # 可自定义线宽

# 绘制图像
fig, ax = plt.subplots()
ax.add_collection(lc)
# 手动设置坐标范围(LineCollection不会自动适配画布范围)
ax.set_xlim(x.min() - 0.1, x.max() + 0.1)
ax.set_ylim(y.min() - 0.1, y.max() + 0.1)
# 可选:添加颜色条说明t值和颜色的对应关系
plt.colorbar(lc, label='t值映射关系')

plt.show()

实现说明

  • 核心思路是把整条折线拆分为N个相邻两点组成的小线段,为每个小线段单独匹配对应t值映射的颜色
  • 若需要更顺滑的颜色过渡效果,可提高x、y的采样点密度
  • 如果你需要自定义蓝色、红色的具体色值,可以通过LinearSegmentedColormap自定义颜色映射表替换默认的coolwarm即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 13:30:04