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

R语言绘制旋转坐标热力图:解决图块间隙问题

解决旋转热力图空白并实现插值覆盖的方案

1. 对旋转后的数据进行插值补全

旋转后的坐标不再是规则矩形网格,直接用geom_tile会出现大量空白,因此需要先通过插值生成覆盖整个区域的密集网格数据:

方法1:使用akima包实现线性插值

# 安装并加载依赖包
install.packages("akima")
library(akima)
library(tidyr)

# 生成目标范围内的密集坐标轴序列
x_seq <- seq(min(framefinal2$X), max(framefinal2$X), length.out = 500)
y_seq <- seq(min(framefinal2$Y), max(framefinal2$Y), length.out = 500)

# 对value字段进行线性插值
interp_data <- interp(x = framefinal2$X, y = framefinal2$Y, z = framefinal2$value, 
                      xo = x_seq, yo = y_seq, linear = TRUE)

# 将插值结果转换为ggplot兼容的dataframe格式
interp_df <- as.data.frame(interp_data)
interp_df <- pivot_longer(interp_df, cols = -x, names_to = "y", values_to = "value")
interp_df$y <- as.numeric(gsub("y", "", interp_df$y))

方法2:使用fields包实现薄板样条插值(平滑度更高)

# 安装并加载依赖包
install.packages("fields")
library(fields)

# 创建覆盖目标区域的密集网格
grid <- expand.grid(X = seq(min(framefinal2$X), max(framefinal2$X), length.out = 500),
                    Y = seq(min(framefinal2$Y), max(framefinal2$Y), length.out = 500))

# 拟合薄板样条插值模型并预测网格点的value值
tps_model <- Tps(framefinal2[, c("X", "Y")], framefinal2$value)
grid$value <- predict(tps_model, grid)

2. 绘制无空白的旋转热力图

用ggplot2绘制静态热力图

插值后的规则网格数据可直接用geom_raster铺满绘图区域,支持平滑过渡:

library(ggplot2)
ggplot(interp_df, aes(x = x, y = y, fill = value)) +
  geom_raster(interpolate = TRUE) +  # 开启绘图阶段的像素平滑
  scale_fill_viridis_c() +  # 可选的配色方案,也可替换为其他配色
  theme_minimal()

用plotly绘制交互式热力图

如果需要交互式查看功能,可使用plotly直接调用插值后的网格数据:

install.packages("plotly")
library(plotly)
library(viridis)

plot_ly(x = x_seq, y = y_seq, z = interp_data$z, type = "heatmap", 
        colors = viridis(256), hoverinfo = "x+y+z")

用base R的raster包绘制栅格热力图

install.packages("raster")
library(raster)
library(viridis)

# 将插值数据转换为栅格对象
r <- raster(interp_data)
# 绘制热力图
plot(r, col = viridis(256), main = "旋转插值热力图")

关键说明

  • 插值时的length.out参数可按需调整:数值越大,生成的网格越密集,图像平滑度越高,但计算耗时也会增加
  • 若原始数据存在缺失值,需先通过na.omit(framefinal2)处理后再进行插值
  • ggplot2中geom_raster的interpolate = TRUE参数,会在绘图阶段对相邻像素做平滑处理,让热力图颜色过渡更自然

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 10:00:16