2017-02-13 58 views
-1

我们正在研究关于蜥蜴生态位和趋同进化的元分析,并创建了PCA分数的3d图,点是来自24个不同家族的蜥蜴物种。 我们决定使用我们的3D图作为我们手稿的补充材料,因为当绘制2维时,有非常有趣的图案被遮挡。例如,所有夜间物种粘在一起,并在第三架飞机上与其他物件分开。因此,为了使数字真正有用,我想包括一些控件来打开/关闭一些对象(如蜥蜴族,椭球或功能组)。我尝试过使用Plotly,它给了你非常好的交互式绘图,但Plotly中的符号仅限于3D绘图中的五个。切换按钮来控制rgl 3d散点图不能正常工作

我终于用R使用rgl包做了它。我必须通过重叠已有的符号来创建新的符号,但最终我得到了我所需要的。

我遵循一个在线教程来创建交互式控件(https://cran.r-project.org/web/packages/rgl/vignettes/WebGL.html),它可以嵌入到html中,并且我花了很多精力让这些控件工作。问题在于,它只能在我的电脑中运行,只能在Chrome中运行(不适用于Firefox和Safari)。我问了一个软件包的创建者,他告诉我该教程是打算用于降价,并且由于我改变了html代码,这种奇怪的行为并不令人意外。

之后,我学习了一些Rmarkdown和html以更好地理解教程,并重新执行代码。现在我有了这些图,我有按钮,但是当我使用Knitr编译脚本时,按钮不起作用。他们中的一些什么都不做,其他一些开启不同的点。

我很抱歉这篇文章的长度,但我真的尝试了一切,我找不到解决方案。

这里是我的数据集的样本的链接,我的[R脚本,生成的HTML使用Knitr:https://drive.google.com/open?id=0B-fCxMGN3utrbWgtZzhWYVpxSjg

非常感谢你提前!

+0

您还没有降价源。 – user2554330

+0

嗨,我做的是在RStudio中使用Knitr编译R脚本(其中有Markdown注释)。你认为这可能是问题吗?我应该直接用Markdown创建一个新脚本吗?谢谢 –

+0

您的.R文件确实是一个.Rmd文件 - 我没有注意到这一点。但它太大而无法调试。使其成为一个最小的自包含示例,然后发布。 – user2554330

回答

1

问题在于,至少有两种不同的方案用于在网页中嵌入rgl场景并将按钮链接到rgl场景,并且在不提供“胶水”的情况下将它们混合在一起以使它们一起工作。

一个rglwidget()总是有一个elementId。通常它是一些随机字符串,但如果你想引用那个场景,你应该指定一个。

toggleButton()函数使用较旧的方案将场景插入到您的网页中。所以你需要将elementId翻译成它使用的前缀。

因此,尝试这样的事:

```{r results='asis'} 
library(rgl) 
x <- plot3d(rnorm(10), rnorm(10), rnorm(10)) 
rglwidget(elementId = "theplot") 
elementId2Prefix("theplot") 
toggleButton(x["data"], prefix = "theplot") 
```