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

如何基于经纬度及数值点数据绘制Contour plots?

如何基于零散经纬度点绘制等高线图(Contour Plots)

等高线图本身依赖规则网格数据,但你手里只有零散的经纬度和数值点的话,不用手动补全meshgrid的空值,直接通过插值生成网格数据就行,下面是Python环境下的实操步骤:

核心思路

用插值工具把零散点映射到覆盖数据范围的规则网格上,再用常规方法画等高线。

具体步骤

1. 导入依赖库

import numpy as np
import matplotlib.pyplot as plt
from scipy.interpolate import griddata

2. 准备你的数据

把你手里的三个列表(经度、纬度、数值)直接用就行,这里用示例数据替代:

# 替换成你的真实数据
lon = [110.1, 110.3, 110.5, 110.2, 110.4]
lat = [30.2, 30.4, 30.1, 30.3, 30.5]
value = [10, 20, 15, 25, 30]

3. 生成目标网格

直接生成覆盖所有数据点范围的规则网格,分辨率自己调(下面是100x100的网格):

grid_lon, grid_lat = np.meshgrid(
    np.linspace(min(lon), max(lon), 100),
    np.linspace(min(lat), max(lat), 100)
)

4. 插值填充网格

用griddata函数完成插值,三种常用方法按需选:

# 线性插值:平衡速度和平滑度,最常用
grid_value = griddata((lon, lat), value, (grid_lon, grid_lat), method='linear')

# 最近邻插值:最快,适合缺失值多的场景,结果偏块状
# grid_value = griddata((lon, lat), value, (grid_lon, grid_lat), method='nearest')

# 立方插值:最平滑,计算稍慢,适合数据点较多的情况
# grid_value = griddata((lon, lat), value, (grid_lon, grid_lat), method='cubic')

5. 绘制等高线图

plt.figure(figsize=(8,6))
# 绘制填充式等高线
contour_fill = plt.contourf(grid_lon, grid_lat, grid_value, cmap='viridis')
# 叠加等高线线条(白色更显眼)
contour_lines = plt.contour(grid_lon, grid_lat, grid_value, colors='white')
# 给等高线加数值标签
plt.clabel(contour_lines, inline=True, fontsize=10)
# 添加颜色条并标注含义
plt.colorbar(contour_fill, label='数值')
# 设置坐标轴和标题
plt.xlabel('经度')
plt.ylabel('纬度')
plt.title('基于零散点的等高线图')
plt.show()

额外提示

  • 网格分辨率(linspace的第三个参数)越高,图越精细,但计算量也越大,根据你的数据量调整
  • 如果数据里有离群点,插值前建议先清洗,避免影响整体插值效果
  • 不同插值方法的结果差异明显,可以多试几种看哪个符合你的需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 15:53:12