knitr,RGL和legend3d:legend3d没有出现在knitr生成的html中

时间:2016-02-25 21:24:59

标签: r knitr r-markdown rgl

我可以使用rglknitr创建动态3D散点图,但缺少legend3d创建的图例。我想这可能与hook_webgl的实施有关。任何的想法?谢谢。

以下是我用于创建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   

1 个答案:

答案 0 :(得分:3)

看起来像rglwidget代码中的错误;我会调查一下。

我建议您对编程风格进行一些更改。这些对这个错误无济于事,但可能会在以后为您解决问题:

  • 使用setupKnitr()功能而不是自己设置编织钩子。 knitr的链接可能会改变,但setupKnitr()会保护您免受问题的影响。

  • 当您想绘制绘图时,不要在块选项中说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获得。还没有太多测试,所以下一次可能会有更多的变化。