使用persp3d一次显示多个图

时间:2019-05-02 12:33:41

标签: r plot rgl

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

下面,我已经找到了一种在不重叠的情况下在不同窗口中打开它们的方法,因此我可以分别检查它们(在代码中:“ t_ number ”和“ w”是与“ F number ”矩阵)。

我尝试使用plot3dmfrow3d命令执行此操作,导致一个窗口中包含许多图(例如发布到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"
      )
    )
    [...]

如何将它们绘制在一个窗口中并全部旋转?

1 个答案:

答案 0 :(得分:0)

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

要在一个窗口中打开多个图,请正确调用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")

screenshot

如果您不希望使用等大小的图数组,还可以使用其他功能:layout3d等。