微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

R:rglwidget playwidget()

如何解决R:rglwidget playwidget()

我想创建一个带有滑块的 rgl 小部件,使用 playwidget() 为每个子集添加不同的文本注释。

如果我运行以下

clear3d()

a1 <- spheres3d(xyz.coords(matrix(sample.int(100,81),ncol = 3)),col="blue",radius = 2)
text3d(10,10,"text1")
a2 <- spheres3d(xyz.coords(matrix(sample.int(100,27),col="red",radius = 2)
text3d(30,5,"text2")
a3 <- spheres3d(xyz.coords(matrix(sample.int(100,9),col="green",radius = 2)
text3d(5,50,"text3")

rglwidget() %>%
  playwidget(start = 0,stop = 2,interval = 1,components = c("Reverse","Play","Slower","Faster","Reset","Slider","Label"),labels = c("a1","a2","a3"),subsetControl(1,subsets = list(aa=a1,bb=a2,cc=a3)))

我为所有子集修复了 3 个文本注释。知道如何解决这个问题吗?

一个更普遍的问题是如何将额外的 rglLowlevel 对象(例如 Box3d())绑定到每个单独的子集,以便在移动滑块时进行更改。 谢谢

解决方法

spheres3dtext3d 的结果都是 rgl id,它们只是具有类的整数值。您可以使用 c() 将它们连接到向量中。将您的示例修改为此,它可以工作:

library(rgl)
clear3d()

a1 <- c(spheres3d(xyz.coords(matrix(sample.int(100,81),ncol = 3)),col="blue",radius = 2),text3d(10,10,"text1"))
a2 <- c(spheres3d(xyz.coords(matrix(sample.int(100,27),col="red",text3d(30,5,"text2"))
a3 <- c(spheres3d(xyz.coords(matrix(sample.int(100,9),col="green",text3d(5,50,"text3"))

rglwidget() %>%
  playwidget(start = 0,stop = 2,interval = 1,components = c("Reverse","Play","Slower","Faster","Reset","Slider","Label"),labels = c("a1","a2","a3"),subsetControl(1,subsets = list(aa=a1,bb=a2,cc=a3)))

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。