12

plot3d()产生一个我可以扭转和旋转的 3d 图。但是当我plot3d()再次调用时,以前的情节消失了,取而代之的是这个情节。

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

本质上,我想同时打开两个 3d 图。

4

3 回答 3

15

像这样:

 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这里的关键是在第二个情节之前调用打开一个新的“设备”

于 2013-02-05T17:04:06.703 回答
3

您可能会发现第二个 rgl 绘图窗口只是恰好放置在先前窗口的顶部。如果您移动第二个窗口,您将看到第一个窗口仍然存在(尽管现在没有“焦点”状态。)无需绘制设备以保持它们可用。您更改获得焦点的窗口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.

于 2013-02-05T21:04:39.450 回答
2

“一次打开两个 3d 图”的替代方法是使用mfrow3d from library("rgl")。它的工作方式与par("mfrow")经典 R相同。

以下改编代码(来自此处)在一个窗口中生成两个并排的 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))
于 2019-01-11T13:44:08.053 回答