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

如何绘制带平滑插值(如克里金法)的属性分布图?

基于克里金法的平滑空间插值绘图实现

要解决三角插值过渡生硬的问题,克里金法是适配空间数据的平滑插值方案,以下是完整实现示例:

1. 依赖库安装(未安装时执行)

pip install pykrige scipy

2. 完整代码实现

import random
import matplotlib.pyplot as plt
import pandas as pd
from pykrige.ok import OrdinaryKriging
import numpy as np

# 生成示例数据
plt.style.use('ggplot')
fig = plt.figure(figsize=(16,8))

data = pd.DataFrame({"X":random.sample(range(530000, 560000), 60),
                     "Y":random.sample(range(8580000, 8620000), 60),
                     "PROPERTY":random.choices(range(0, 30), k=60)})

x = data["X"].values
y = data["Y"].values
z = data["PROPERTY"].values

# 创建普通克里金模型
# variogram_model可选:'linear'/'power'/'gaussian'/'spherical',可按需调整
ok = OrdinaryKriging(
    x, y, z,
    variogram_model='gaussian',
    verbose=False,
    enable_plotting=False
)

# 生成覆盖数据范围的插值网格,分辨率可调
grid_x = np.linspace(x.min(), x.max(), 100)
grid_y = np.linspace(y.min(), y.max(), 100)

# 执行克里金插值
z_interp, _ = ok.execute('grid', grid_x, grid_y)

# 绘制平滑插值热力图
plt.contourf(grid_x, grid_y, z_interp, cmap='rainbow', levels=50)
plt.colorbar(label='PROPERTY')

# 叠加原始数据点
plt.scatter(x, y, color='black', s=50, edgecolor='white')

plt.xlabel("X")
plt.ylabel("Y")
plt.title("克里金法平滑插值属性分布图")
plt.show()

关键说明

  • 模型选择:variogram_model需匹配数据的空间相关性,高斯(gaussian)模型适配多数连续空间数据,若效果不佳可尝试球形(spherical)模型。
  • 网格精度:np.linspace的第三个参数控制网格密度,数值越大插值越精细,同时计算耗时会增加。
  • 插值结果:z_interp为平滑后的属性值网格,返回的第二个参数是插值方差,用于评估精度,无需时可忽略。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 23:45:43