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

PyQtGraph自定义颜色映射:GPS轨迹速度着色及图例创建需求

解决GPS轨迹分段着色与图例创建问题

核心思路

由于matplotlib的plot()无法直接为折线的每一段分配不同颜色,你需要逐段绘制轨迹线段,再通过自定义图例或颜色条关联颜色与速度值。以下是两种可行方案,基于你已有的RGB颜色列表实现:


方案1:自定义离散图例(适合速度分区间场景)

如果你的速度是按区间划分(如<10km/h、10-20km/h、>20km/h),可以手动创建图例项:

import matplotlib.pyplot as plt
from matplotlib.patches import Patch

# 假设你已有的数据
lons = [116.3, 116.31, 116.32, 116.33]  # 经度序列
lats = [39.9, 39.91, 39.92, 39.93]      # 纬度序列
speeds = [5, 15, 25]                    # 每段线段的速度值
colors = [(0,1,0), (1,1,0), (1,0,0)]    # 对应每段的RGB颜色

# 逐段绘制轨迹
for i in range(len(lons)-1):
    plt.plot([lons[i], lons[i+1]], [lats[i], lats[i+1]], color=colors[i], linewidth=2)

# 定义速度区间与颜色的映射(根据你的实际区间调整)
speed_labels = ["<10km/h", "10-20km/h", ">20km/h"]
color_map = dict(zip(speed_labels, [(0,1,0), (1,1,0), (1,0,0)]))

# 创建自定义图例
legend_elements = [Patch(facecolor=color_map[label], edgecolor='black', label=label) 
                   for label in speed_labels]
plt.legend(handles=legend_elements, loc="upper right")

plt.xlabel("经度")
plt.ylabel("纬度")
plt.title("GPS轨迹(按速度着色)")
plt.show()

方案2:连续颜色条(适合速度连续变化场景)

如果速度是连续值,可通过ScalarMappable将RGB颜色映射到速度范围,生成标准颜色条:

import matplotlib.pyplot as plt
from matplotlib.cm import ScalarMappable
from matplotlib.colors import Normalize

# 假设你已有的数据
lons = [116.3, 116.31, 116.32, 116.33]
lats = [39.9, 39.91, 39.92, 39.93]
speeds = [5, 15, 25]
colors = [(0,1,0), (1,1,0), (1,0,0)]

# 逐段绘制轨迹
for i in range(len(lons)-1):
    plt.plot([lons[i], lons[i+1]], [lats[i], lats[i+1]], color=colors[i], linewidth=2)

# 创建颜色映射的归一化与ScalarMappable
norm = Normalize(vmin=min(speeds), vmax=max(speeds))
sm = ScalarMappable(norm=norm, cmap=None)
sm.set_array(speeds)
# 手动设置颜色映射(匹配你的RGB列表)
sm.cmap = plt.cm.colors.ListedColormap(colors)

# 添加颜色条
cbar = plt.colorbar(sm, ticks=speeds)
cbar.set_label("速度 (km/h)")

plt.xlabel("经度")
plt.ylabel("纬度")
plt.title("GPS轨迹(按速度着色)")
plt.show()

关键注意事项

  • 确保每段线段的颜色与速度值一一对应,colors列表长度需等于len(lons)-1(即线段数量)。
  • 若使用静态颜色-值对应图,可单独绘制一个包含颜色块与对应速度标签的子图,作为独立图例使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 19:22:26