2017-01-23 68 views
1

我试图在rgl图上绘制多个背景图(在我的现实世界中,一个用于线和一个用于点),我希望它们处于不同的角落屏幕。看起来rgl的默认行为是在调用新的图例时替换旧的图例。下面的代码,从rgllegend3d例如修改,说明了这一点:RGL中的多个二维背景图

library(rgl) 
x <- rnorm(100) 
y <- rnorm(100) 
z <- rnorm(100) 
open3d() 
par3d(windowRect = c(100, 100, 612, 612)) 
plot3d(x, y, z) 
legend3d(x = 0, y = 0, xjust = 0, yjust = 0, legend = c("2D", "3D"), pch = c(1, 16)) 
legend3d(x = 1, y = 0, xjust = 1, yjust = 0, legend = c("2D", "3D"), pch = c(1, 16)) 

我能做些什么来解决此问题,并得到多个2D图形出现?

回答

2

legend3d()plot()之后使用legend()作为背景。所以它不能制作多个传说。使用bgplot3d()会更好。

open3d() 
par3d(windowRect = c(100, 100, 612, 612)) 

plot3d(x, y, z) 

bgplot3d({ 
    par(mar = c(0, 0, 0, 0)) 
    plot(0, 0, type = "n", xlim = 0:1, ylim = 0:1, xaxs = "i", 
     yaxs = "i", axes = FALSE, bty = "n") 
    legend(x = 0, y = 0, xjust = 0, yjust = 0, legend = c("2D", "3D"), pch = c(1, 16)) 
    legend(x = 1, y = 0, xjust = 1, yjust = 0, legend = c("2D", "3D"), pch = c(1, 16)) 
}) 

enter image description here