我可以使用rgl
和knitr
创建动态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
答案 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获得。还没有太多测试,所以下一次可能会有更多的变化。