使用 persp3d 一次显示多个绘图

Displaying multiple plots at once with persp3d

我用 persp3d 函数和 open3d 得到了许多光谱数据图,我可以用不同的 windows 打开它们(见下文)。 我的问题是是否有可能通过提供一些行数和列数在同一个 window 中打开它们? 如果是这样,是否还有可能我用鼠标进行的旋转适用于所有显示的图?

下面我已经找到了一种方法,可以在不同的windows中打开它们而不重叠,所以我可以单独检查它们(代码中:"t_number"和"w"是对应的向量分别到 "Fnumber" 矩阵)。

我试着用 plot3dmfrow3d 命令来做,结果是一个 window 有很多图(就像发布到 this question 的答案一样,但是plot3d 函数无法提供足够的数据图(光谱数据看起来与 persp3d 中的数据不同)。

   open3d(
    persp3d(t_134, w, F134, col = col,
               xlab = "", ylab = "", zlab = "", main = "F134", 
      )
    )
    open3d(
     persp3d(t_135, w, F135, col = col,
               xlab = "", ylab = "", zlab = "", main = "F135"
      )
    )
    [...]

如何将它们绘制在一个 window 中并旋转它们?

您对 open3d( ... plot function ...) 的使用是错误的。 open3d 的参数控制 window 的特征。您不应该将 rgl 绘图结果传递给它。

要在单个 window 中打开多个绘图,正确调用 open3d 后,调用 mfrow3d(rows, cols, sharedMouse = TRUE) 设置绘图数组。他们都会对其中任何一个中的鼠标操作做出响应。

例如:

library(rgl)
x <- rnorm(100)
y <- rnorm(100)
z <- rnorm(100)
open3d()
mfrow3d(2, 2, sharedMouse = TRUE)
plot3d(x, y, z, col = "red")
plot3d(x, y, z, col = "green")
plot3d(x, y, z, col = "blue")
plot3d(x, y, z, col = "yellow")

如果您不想要大小相等的绘图数组,还有其他函数:layout3d,等等