r - 在 R 中使用 plot3D {rasterVis} 在同一窗口中显示多个 3d 图

标签 r rgl rastervis topography plot3d

我有兴趣制作两个并排显示在同一个 Xquartz 设备窗口中的 3d 地形图。使用 rgl 包在同一窗口中显示两个 3d 图非常简单 - 文档中有大量使用 mfrow3d() 和其他方法的示例。

但是,我需要使用 rasterVis 包中的 plot3D() 函数。我使用来自 rasterVis 的 plot3D() 而不是来自 rgl 的类似 surface3d() 的原因是我需要使用 drape plot3D() 中的参数,用于在 3d 地形图上将栅格值显示为颜色(并且该栅格具有与在绘图上创建 z 轴的栅格不同的值)。如果有人对 rgl 函数中类似于悬垂的东西有提示,我也会对此感兴趣!

当我尝试将 mfrow3d()plot3D() 函数一起使用时,它会弹出一系列空白设备窗口,而不是并排显示两个绘图在同一个窗口中。

这是一些使用 plot3D 制作地形图的代码,来自 rasterVis 文档:

data(volcano)
r <- raster(volcano)
extent(r) <- c(0, 610, 0, 870)
levelplot(r, col.regions=terrain.colors)
plot3D(r)

在这里,我尝试使用 mfrow3d 并排绘制 2 个相同的火山图,一个是蓝色的,一个是红色的,我从 rgl 文档中改编而来:

volcanos <- list(r, r)
col <- c("blue", "red")
open3d()
mfrow3d(1,2)
for (i in 1:2) {
next3d()   
plot3D(volcanos[[i]], col=col[i])
}

我想用 rasterVis 的 plot3D 做的事情是否可行?

最佳答案

rasterVis::plot3D 的当前版本每次调用都会打开一个新设备。我已经修改了它的代码来测试是否有一个事件的设备,并且只在需要时打开一个新的。有了这个commit您的示例按预期工作。您应该使用 devtools::install_github('oscarperpinan/rasterVis') 安装 rasterVis 的开发版本。

关于r - 在 R 中使用 plot3D {rasterVis} 在同一窗口中显示多个 3d 图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32790652/

相关文章:

r - 水平图颜色键 - 范围和极值

r - 猫和打印有什么区别?

r - 将 animate() 与 R 栅格中的一系列水平图一起使用

r - 使用 levelplot 更改光栅面板标题

r - 尝试使用 movie3d 制作 3D PCA 图(rgl)的电影

r - 使用 misc3d 绘制平滑的隐式曲面

r - 与 R 中的plot3D包重叠标签

c++ - 在 C++ 中,R 中是否有 "source"的等价物?

arrays - 通过对 R 中不同索引求和来矢量化(或加速)双循环

r - 如果for循环中发生错误,如何更改值?