2016-02-25 29 views
2

我能夠使用rglknitr創建動態三維散點圖,但由legend3d創建的圖例缺失。我想這可能與hook_webgl的執行有關。任何想法?謝謝。knitr,RGL和legend3d:legend3d沒有出現在由knitr生成的html中

下面是我用來創建3D散點圖代碼:

```{r fig1, webgl=TRUE, fig.width=10 , fig.height = 10} 
    library(knitr) 
    library(rgl) 
    knit_hooks$set(webgl = hook_webgl) 

    x <- sort(rnorm(1000)) 
    y <- rnorm(1000) 
    z <- rnorm(1000) + atan2(x,y) 
    plot3d(x, y, z, col=rep(1:2,each=500)) 
    legend3d("topright",legend=c("Type 1","Type 2"), pch=16, col=1:2) 
``` 

我的會話信息:

R version 3.1.3 (2015-03-09) 
Platform: i386-w64-mingw32/i386 (32-bit) 
Running under: Windows Server 2008 R2 x64 (build 7601) Service Pack 1 

locale: 
[1] LC_COLLATE=English_United States.1252 
[2] LC_CTYPE=English_United States.1252 
[3] LC_MONETARY=English_United States.1252 
[4] LC_NUMERIC=C       
[5] LC_TIME=English_United States.1252  

attached base packages: 
[1] stats  graphics grDevices utils  datasets methods 
[7] base  

other attached packages: 
[1] knitr_1.11 rgl_0.95.1441 dplyr_0.4.3 

loaded via a namespace (and not attached): 
[1] assertthat_0.1 DBI_0.3.1  digest_0.6.8 evaluate_0.8 
[5] formatR_1.2.1 highr_0.5.1  htmltools_0.3 lazyeval_0.1.10 
[9] magrittr_1.5 parallel_3.1.3 R6_2.1.2  Rcpp_0.12.3  
[13] rmarkdown_0.9.5 stringi_0.5-5 stringr_1.0.0 tools_3.1.3  
[17] yaml_2.1.13 

回答

3

貌似在rglwidget代碼中的錯誤;我會研究它。

我建議對您的編程風格進行一些更改。這些將不會與這個bug的幫助,但以後可能會節省您的問題:

  • 使用setupKnitr()功能,而不是設置knitr勾自己。鏈接到knitr可能會改變,但setupKnitr()將保護你免受問題。

  • 而不是在chunk選項中說webgl = TRUE,當你想繪製圖時調用rglwidget :: rglwidget()函數。我希望將來可以不再需要這個通話(更像是普通情節發生的情況),但現在這是經過更好測試的方式。

  • 更新您的R.當前版本是3.2.3,很快就會有3.2.4版本。

  • 使用R-forge的rgl和rglwidget。它們比CRAN版本更新,並且有幾個錯誤修復。希望很快他們也會有傳奇錯誤修復。

後來補充:

這不是因爲這在過去是沒有實現這麼多的錯誤。現在是,如果您使用rgl版本0.95.1456和rglwidget版本0.1.1456,均可從R-forge獲得。沒有太多的測試,所以下一次可能會有更多的變化。