• 以下是使用R语言进行克里金插值预测后生成平滑热图的步骤指南:

1. 提升克里金插值网格分辨率

  • 在克里金预测阶段生成更密集的网格,从根本上减少像素感。
library(gstat)
library(sp)
library(raster)

# 假设已有空间数据框`data`,包含坐标(x,y)和变量(z)
coordinates(data) <- ~x + y

# 创建高分辨率网格(调整n=100为更高值,如n=200)
grid <- expand.grid(
  x = seq(min(data$x), max(data$x), length.out = 200),
  y = seq(min(data$y), max(data$y), length.out = 200)
)
gridded(grid) <- ~x + y

# 执行克里金插值(以普通克里金为例)
krig_result <- krige(z ~ 1, data, newdata = grid, model = vgm_model)

2. 转换为栅格对象并进行平滑处理

  • 将插值结果转换为栅格格式后应用平滑滤波器。
# 将预测值转换为栅格
krig_raster <- raster(krig_result, layer = "var1.pred")

# 高斯平滑滤波(调整sigma控制平滑强度)
library(terra)
krig_smoothed <- terra::focal(
  rast(krig_raster), 
  w = matrix(1, 5, 5),  # 5x5窗口
  fun = function(x) mean(x, na.rm = TRUE)
)

# 转换回数据框用于ggplot绘图
smoothed_df <- as.data.frame(krig_smoothed, xy = TRUE)

3. 使用ggplot2绘制平滑热图

  • 通过geom_rastergeom_tile结合插值参数优化可视化。
library(ggplot2)

ggplot() +
  geom_raster(
    data = smoothed_df, 
    aes(x = x, y = y, fill = lyr.1),
    interpolate = TRUE  # 关键参数,启用插值抗锯齿
  ) +
  scale_fill_viridis_c(option = "plasma", name = "预测值") +
  coord_fixed() +
  theme_minimal() +
  labs(title = "平滑克里金插值热图")

4. 替代方案:等高线填充图

  • 使用geom_contour_filled生成平滑的等值区域图。
ggplot(smoothed_df, aes(x = x, y = y, z = lyr.1)) +
  geom_contour_filled(bins = 30) +  # 调整bins控制平滑度
  scale_fill_viridis_d(option = "magma", name = "预测区间") +
  coord_fixed() +
  theme_minimal()

关键参数说明

参数/函数 作用 推荐值
expand.grid(length.out) 控制网格分辨率 200-500(依数据范围调整)
focal(w) 平滑窗口大小 5x5 或 7x7
geom_raster(interpolate) 启用颜色插值消除锯齿 TRUE
geom_contour_filled(bins) 控制等值线密度 20-50

效果对比

  • 原始低分辨率网格:明显像素块,边界锯齿状。
  • 高分辨率+平滑滤波:颜色过渡自然,无突兀网格线。
  • 等高线填充:平滑的区域划分,适合展示趋势。
  • 选择方法时需权衡计算成本与可视化需求。若需快速预览,可优先启用interpolate=TRUE;若追求出版级图形,建议结合高分辨率网格与后处理平滑。
Logo

永洪科技,致力于打造全球领先的数据技术厂商,具备从数据应用方案咨询、BI、AIGC智能分析、数字孪生、数据资产、数据治理、数据实施的端到端大数据价值服务能力。

更多推荐