首页 > 解决方案 > 如何在rgl中绘制到整个窗口?

问题描述

我在 rgl 中将 4 个子图绘制到一个窗口,我希望它们填充可用空间:

library(rgl);
rgl::open3d(windowRect = c(0,50, 1200, 1200));
rgl::mfrow3d(2, 2);


rgl::next3d(reuse=FALSE);
rgl::bg3d("yellow");

rgl::next3d(reuse=FALSE);
rgl::bg3d("blue");

rgl::next3d(reuse=FALSE);
rgl::bg3d("red");

rgl::next3d(reuse=FALSE);
rgl::bg3d("green");

然而,结果只使用了窗口的一小部分,它看起来像这样:

上面给出的代码的结果

如何使 4 个彩色区域跨越整个窗口,而不是仅使用左下角的小部分?

标签: rrgl

解决方案


它为我提供了几个小时的工具,但我终于设法让我自己可靠地工作。看来您必须在 open3d() 之后调用 par3d()。

还要注意对 Sys.sleep 的调用,正如上面评论中 user20650 所建议的那样。没有它,窗口只有在点击后才会以全尺寸绘制(在我的机器上?)。

完整的工作代码:

rgloptions = list("windowRect"=c(50,50,1000,1000));

rgl::open3d();
do.call(rgl::par3d, rgloptions);
Sys.sleep(1);
rgl::mfrow3d(2, 2);

rgl::next3d(reuse=FALSE);
rgl::bg3d("yellow");

rgl::next3d(reuse=FALSE);
rgl::bg3d("blue");

rgl::next3d(reuse=FALSE);
rgl::bg3d("red");

rgl::next3d(reuse=FALSE);
rgl::bg3d("green");

这可靠地提供了以下输出:

在此处输入图像描述


推荐阅读