使用rgl的next3d()叠加图形时坐标轴异常及箭头位置错误的问题求助
rgl的next3d()叠加图形时坐标轴异常及箭头位置错误的问题求助
大家好,我在使用rgl包创建带共享鼠标的并排3D图时遇到了一个棘手的问题,想请各位帮忙分析一下。
先给大家附上可复现的问题示例,代码参考了rgl官方手册:
set.seed(1234) x <- sort(rnorm(100)) y <- rnorm(100) z <- rnorm(100) + atan2(x, y) # 创建并排的3D绘图场景 open3d() mfrow3d(1, 2, sharedMouse=TRUE) # 绘制左侧图形:散点+箭头 plot3d(x, y, z, col=rainbow(100)) arrow3d(c(0, 0, 0), c(2, 2, 2), type="lines") # 切换到右侧子场景 next3d() plot3d(x, y, z, col=rainbow(100))
到这一步为止,一切都很正常:左右两个3D图显示一致,鼠标也能共享控制视角。
但当我尝试给右侧的图也加上相同的箭头时,执行这行代码:
arrow3d(c(0, 0, 0), c(2, 2, 2), type="lines")
就出现了问题:右侧图的坐标轴突然发生了变化,箭头的位置也完全不对。
我试过用两个独立的open3d()窗口分别绘制带箭头的图,它们显示得完全一致,没有任何异常。另外我还尝试过使用manipulateWidget包的combineWidgets方法,这个方法能正确渲染图形,但没法实现子场景之间的鼠标共享;至于plotly,因为我的应用需要在路径上绘制大量3D箭头,而plotly里除了注释功能外,似乎很难实现3D箭头,所以这个方案也不太适用。
我的运行环境:rgl 1.1.3,R 4.2.2,系统为x86_64-apple-darwin17.0的Mac。
备注:内容来源于stack exchange,提问作者Richard Gonzalez
相关产品推荐
相关产品推荐

