2017-02-13 57 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") 
```