如何在 rgl 中画满 window?
How to draw to the full window in rgl?
我在 rgl 中绘制 4 个子图到 window,我希望它们填充可用的 space:
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");
然而,结果只使用了 window 的一小部分,看起来像这样:
如何让 4 个彩色区域覆盖整个 window,而不是只使用左下角的小部分?
我不确定这是否是您正在寻找的确切解决方案,但是运行您的代码作为函数对我有用。
make_box <- function(){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")}
make_box()
它帮助了我好几个小时,但我终于设法靠自己让它可靠地工作。看来你必须在 open3d() 之后调用 par3d()。
另请注意对 Sys.sleep 的调用,正如 user20650 在上述评论中所建议的那样。没有它,window 只有在点击它(在我的机器上?)后才会以全尺寸绘制。
完整的工作代码:
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");
这可靠地给出了以下输出:
我在 rgl 中绘制 4 个子图到 window,我希望它们填充可用的 space:
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");
然而,结果只使用了 window 的一小部分,看起来像这样:
如何让 4 个彩色区域覆盖整个 window,而不是只使用左下角的小部分?
我不确定这是否是您正在寻找的确切解决方案,但是运行您的代码作为函数对我有用。
make_box <- function(){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")}
make_box()
它帮助了我好几个小时,但我终于设法靠自己让它可靠地工作。看来你必须在 open3d() 之后调用 par3d()。
另请注意对 Sys.sleep 的调用,正如 user20650 在上述评论中所建议的那样。没有它,window 只有在点击它(在我的机器上?)后才会以全尺寸绘制。
完整的工作代码:
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");
这可靠地给出了以下输出: