plot3d()
生成一个我可以扭转并旋转的3d图。但是,当我再次呼叫plot3d()
时,之前的情节消失了,并被这一个取代。
我怎样才能打开一个新的XQuartz窗口,而不是用新的3d图替换旧窗口。
基本上,我想要一次打开两个3d图。
答案 0 :(得分:13)
library(rgl)
open3d()
x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x,y)
plot3d(x, y, z, col=rainbow(1000))
open3d()
x <- sort(rnorm(20))
y <- rnorm(20)
z <- rnorm(20) + atan2(x,y)
plot3d(x, y, z, col=rainbow(20))
此处的关键是在第二个绘图之前调用open3d
以打开新的“设备”
答案 1 :(得分:3)
您可能会发现第二个rgl绘图窗口已经完全放在前一个窗口的顶部。如果您移动第二个窗口,您将看到第一个窗口仍然存在(虽然现在没有#34; Focus&#34;状态。)没有必要绘制到设备以保持它们可用。您可以使用rgl.set
更改获得焦点的窗口:
> open3d()
[1] 3 # might have been "1"
> open3d()
[1] 4 # Now move that 2nd window to the side
> rgl.set(3)
#Focus is returned to the first window.
你不能同时激活2个窗口(在获取命令的意义上),但你可以让它们都可见,如果设置了一个旋转,它会在焦点转移到另一个窗口后继续旋转。如果设置plot3d
,也可以使用add=TRUE
功能添加到现有的地图。
答案 2 :(得分:2)
“一次打开两个3d图”的一种替代方法是使用library("rgl")
中的mfrow3d。它的工作方式与经典R中的par("mfrow")
相同。
以下经过改编的代码(来自here)在一个窗口中生成两个并排的3D图(2列):
library(rgl)
mfrow3d(1, 2)
x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x,y)
plot3d(x, y, z, col=rainbow(1000))
x <- sort(rnorm(20))
y <- rnorm(20)
z <- rnorm(20) + atan2(x,y)
plot3d(x, y, z, col=rainbow(20))