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

如何用Python在热力图(2D地形图)上绘制指定连通路径?

解决方案

要在热力图上叠加一维索引对应的路径线条,核心是把一维索引转换成二维坐标,再用plt.plot()绘制路径。具体步骤如下:

1. 坐标转换逻辑

因为你用x.reshape((n,n))默认是行优先(C顺序),所以一维索引idx对应的二维坐标(行、列)可以通过整除和取余计算:

  • 行索引:row = idx // n
  • 列索引:col = idx % n

另外你设置了origin="lower",这意味着imshow的原点在左下角,行索引0对应图的底部,行索引n-1对应顶部,所以转换后的坐标不需要额外反转,直接可用。

2. 完整代码示例

import numpy as np
import matplotlib.pyplot as plt

# 初始化参数
n = 25  # 因为n²=625
x = np.random.rand(625)  # 生成测试用的随机向量
path = np.array([1, 2, 27, 28, 54,55,56,81,106,131])

# 1. 绘制热力图
plt.imshow(x.reshape((n,n)), cmap="magma", origin="lower")

# 2. 转换路径索引为二维坐标
rows = path // n
cols = path % n

# 3. 叠加路径线条
plt.plot(cols, rows, color="white", linewidth=2, marker="o", markersize=4)
# 这里可以调整color(颜色)、linewidth(线宽)、marker(标记点)等样式

# 可选:添加颜色条
plt.colorbar()
plt.show()

关键细节说明

  • plt.plot(cols, rows):因为matplotlib的x轴对应列索引,y轴对应行索引,所以要把列作为第一个参数,行作为第二个参数。
  • 样式调整:可以用color="red"、linestyle="--"等参数自定义路径外观,让路径在热力图上更突出。
  • 索引注意:如果你的一维索引是从1开始(比如示例中的path第一个元素是1),上述转换是正确的;如果索引从0开始,逻辑完全一致,不需要修改。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 18:31:08