plot3D - 一次有两个情节

时间:2013-02-05 16:43:15

标签: r plot rgl

plot3d()生成一个我可以扭转并旋转的3d图。但是,当我再次呼叫plot3d()时,之前的情节消失了,并被这一个取代。

我怎样才能打开一个新的XQuartz窗口,而不是用新的3d图替换旧窗口。

基本上,我想要一次打开两个3d图。

3 个答案:

答案 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))