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

如何在R语言中实现时间堆叠地图的可视化?

3D堆叠可视化时序栅格数据

我用以下代码生成了包含3个时间步的时序栅格数据:

library(terra)

# 从文件创建SpatRaster
f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)

# 生成3个时间步的时序数据
r = c(r, r*1.5, r*2)

我想要实现时间堆叠可视化,也就是把不同时间的2D地图(切片)沿时间轴堆叠成3D形式。

预期效果

将多个时序栅格切片沿Z轴(代表时间维度)堆叠,形成立体的3D展示效果,每个切片保留自身的空间分布和颜色映射,能直观看到时间维度上的变化。

已尝试的方法

我用ggplot2做了分面可视化,代码如下:

library(ggplot2)
library(tidyr)

df = as.data.frame(r, xy = TRUE) |>
        tibble::tibble(.name_repair = "unique") |> 
        pivot_longer(-c(1, 2))

ggplot(df, aes(x, y, fill = value)) +
        geom_raster() +
        facet_grid(~name)

但这个方法是把各时间步的地图并列分面展示,不是我想要的堆叠式3D效果。


解决方案:用rgl实现交互式3D堆叠可视化

可以使用rgl包创建交互式的3D堆叠效果,每个时间步对应Z轴上的一个层级,具体代码如下:

library(rgl)
library(terra)

# 生成数据(同问题代码)
f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)
r <- c(r, r*1.5, r*2)

# 将栅格转换为矩阵列表
r_list <- lapply(1:nlyr(r), function(i) as.matrix(r[[i]]))
x <- xFromCol(r)
y <- yFromRow(r)
z_levels <- 1:nlyr(r)  # 每个时间步对应一个Z高度

# 初始化3D窗口
open3d()

# 逐个绘制每个时间步的表面
for(i in seq_along(r_list)){
  surface3d(x, y, rep(z_levels[i], length(x)*length(y)), 
            z = r_list[[i]],
            col = terrain.colors(100)[cut(r_list[[i]], 100)],
            alpha = 0.8)  # 设置透明度,方便看到下层切片
}

# 添加坐标轴标签
axes3d()
title3d(xlab = "X", ylab = "Y", zlab = "时间步")

这段代码会生成一个交互式3D窗口,你可以旋转、缩放视角查看堆叠的时序栅格,通过调整alpha参数控制切片透明度,能同时观察多层数据的空间分布。

备选方案:用plot3D生成静态3D堆叠图

如果需要静态可视化结果,可以使用plot3D包,通过散点颜色映射栅格值,沿Z轴堆叠时间步:

library(plot3D)
library(terra)
library(tidyr)

# 数据准备
f <- system.file("ex/elev.tif", package="terra")
r <- rast(f)
r <- c(r, r*1.5, r*2)

# 转换为长格式数据
df <- as.data.frame(r, xy = TRUE) |>
  tibble::tibble(.name_repair = "unique") |>
  pivot_longer(-c(x, y), names_to = "time", values_to = "value") |>
  mutate(time = as.integer(factor(time)))

# 绘制3D堆叠图
scatter3D(df$x, df$y, df$time, colvar = df$value,
          col = terrain.colors(100), pch = 16, cex = 0.5,
          xlab = "X", ylab = "Y", zlab = "时间步",
          ticktype = "detailed")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:40:16