我有以下 Rmd 文件:
---
output: bookdown::gitbook
---
```{r include=FALSE}
rgl::setupKnitr()
```
```{r testing1,webgl=TRUE}
with(attitude,
car::scatter3d(x = rating, z = complaints, y = learning)
)
```
```{r testing2,webgl=TRUE}
with(attitude,
car::scatter3d(x = rating, z = complaints, y = learning)
)
```
当我编织这个文件时,它会生成一个 HTML 文件,其中包含两个相同的 3D 交互式散点图。两个散点图看起来都应该,但第二个散点图没有正确旋转。它不会正确地水平深度旋转(例如,围绕垂直轴)。
如果有帮助,您可以在此处找到针织物的 HTML 输出:https ://www.dropbox.com/s/v3usmtes7n54t6q/Untitled.html.zip?dl=0
我已经完成了以下所有操作,但都没有解决问题:
- 用 . 更新了所有软件包
update.packages()
。 - 安装了开发版
bookdown
。 - 安装了开发版
knitr
。 - 在这里尝试了解决方案(不起作用):markdown 文件中的交互式 3D 绘图 - 不再起作用了?
我注意到以下几点:
- 如果我将其更改
output
为html_document
我没有问题(我正在调试问题bookdown::gitbook
,因此知识并不能直接帮助我)。 - 在 Firefox(77.0.1,64 位)javascript 错误控制台中出现错误:(
TypeError: li[0] is undefined / plugin-bookdown.js:152:43
这似乎与目录和滚动有关?)
这是 sessionInfo() 的输出:
> sessionInfo()
R version 4.0.0 (2020-04-24)
Platform: x86_64-apple-darwin17.0 (64-bit)
Running under: macOS Catalina 10.15.5
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
locale:
[1] en_GB.UTF-8/en_GB.UTF-8/en_GB.UTF-8/C/en_GB.UTF-8/en_GB.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] bookdown_0.19.4 fansi_0.4.1 digest_0.6.25 crayon_1.3.4
[5] assertthat_0.2.1 evaluate_0.14 rlang_0.4.6 cli_2.0.2
[9] rstudioapi_0.11 rmarkdown_2.3 tools_4.0.0 glue_1.4.1
[13] xfun_0.14 yaml_2.2.1 rsconnect_0.8.16 compiler_4.0.0
[17] htmltools_0.5.0 knitr_1.28.7
此外,这里是一些其他相关包的版本:
> installed.packages()[c("rgl","mgcv","car"),"Version"]
rgl mgcv car
"0.100.54" "1.8-31" "3.0-8"
编辑以添加更多细节
我在使用时遇到了同样的问题rgl::persp3d
,所以它不是特定于car::scatter3d
. 下面 Rmd 文件中的 HTML 仅使用rgl
但表现出相同的行为。
---
output: bookdown::gitbook
---
```{r include=FALSE}
rgl::setupKnitr()
x <- seq(-10, 10, length = 30)
y <- x
f <- function(x, y) { r <- sqrt(x^2 + y^2); 10 * sin(r)/r }
z <- outer(x, y, f)
z[is.na(z)] <- 1
```
```{r testing1,webgl=TRUE}
rgl::persp3d(x, y, z, aspect = c(1, 1, 0.5), col = "lightblue",
xlab = "X", ylab = "Y", zlab = "Sinc( r )",
polygon_offset = 1)
```
```{r testing2,webgl=TRUE}
rgl::persp3d(x, y, z, aspect = c(1, 1, 0.5), col = "lightblue",
xlab = "X", ylab = "Y", zlab = "Sinc( r )",
polygon_offset = 1)
```