使用R

时间:2015-09-25 21:04:36

标签: r plot 3d rgl topography

我有兴趣制作两个在同一个Xquartz设备窗口中并排显示的三维地形图。使用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做什么?任何想法将不胜感激!

1 个答案:

答案 0 :(得分:2)

当前版本的rasterVis::plot3D会在每次调用时打开一个新设备。我已修改其代码以测试是否存在活动设备,并仅在需要时打开新设备。使用此commit,您的示例将按预期工作。您应该使用rasterVis安装devtools::install_github('oscarperpinan/rasterVis')的开发版本。