knitr bookdown::gitbook 和 webgl:旋转无法正常工作
knitr bookdown::gitbook and webgl: rotation does not work properly
我有以下 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 交互式散点图的文件。两个散点图看起来都应该如此,但是 second 散点图没有正确旋转。它不会正确地水平旋转深度(例如,围绕垂直轴)。
如果有帮助,您可以在此处找到 knit 的 HTML 输出:https://www.dropbox.com/s/v3usmtes7n54t6q/Untitled.html.zip?dl=0
我已完成以下所有操作,其中 none 已解决问题:
- 更新了所有包
update.packages()
。
- 安装了
bookdown
的开发版本。
- 安装了
knitr
的开发版本。
- 尝试了这里的解决方案(没有用):interactive 3D plots in markdown file - not working anymore?
我注意到以下几点:
- 如果我将
output
更改为 html_document
我没有问题(不过我正在 bookdown::gitbook
中调试问题,所以这些知识并不能直接帮助我).
- Firefox(77.0.1,64位)javascript错误控制台出现错误:
TypeError: li[0] is undefined / plugin-bookdown.js:152:43
(这似乎与table的内容和滚动?)
这是 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)
```
这原来是 rgl
中的一个错误,它使用一种过时的方法来计算鼠标点击相对于场景中对象的位置。它适用于 html_document
,但不适用于 bookdown::gitbook
。
rgl
的开发版本 (0.102.6) 已经修复了这个问题,但它包含了一些非常重要的变化,还有一些其他的东西仍然被他们破坏了:特别是使用 webgl=TRUE
块选项。如果你想使用开发版本,你应该在每个块中使用对 rglwidget()
的显式调用,或者如果你想尝试新的东西,使用 rgl::setupKnitr(autoprint = TRUE)
并只处理 rgl
图形像基本图形,由块选项 fig.keep
等控制
编辑添加: 版本 0.102.7 修复了已知的 webgl=TRUE
问题。
我有以下 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 交互式散点图的文件。两个散点图看起来都应该如此,但是 second 散点图没有正确旋转。它不会正确地水平旋转深度(例如,围绕垂直轴)。
如果有帮助,您可以在此处找到 knit 的 HTML 输出:https://www.dropbox.com/s/v3usmtes7n54t6q/Untitled.html.zip?dl=0
我已完成以下所有操作,其中 none 已解决问题:
- 更新了所有包
update.packages()
。 - 安装了
bookdown
的开发版本。 - 安装了
knitr
的开发版本。 - 尝试了这里的解决方案(没有用):interactive 3D plots in markdown file - not working anymore?
我注意到以下几点:
- 如果我将
output
更改为html_document
我没有问题(不过我正在bookdown::gitbook
中调试问题,所以这些知识并不能直接帮助我). - Firefox(77.0.1,64位)javascript错误控制台出现错误:
TypeError: li[0] is undefined / plugin-bookdown.js:152:43
(这似乎与table的内容和滚动?)
这是 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)
```
这原来是 rgl
中的一个错误,它使用一种过时的方法来计算鼠标点击相对于场景中对象的位置。它适用于 html_document
,但不适用于 bookdown::gitbook
。
rgl
的开发版本 (0.102.6) 已经修复了这个问题,但它包含了一些非常重要的变化,还有一些其他的东西仍然被他们破坏了:特别是使用 webgl=TRUE
块选项。如果你想使用开发版本,你应该在每个块中使用对 rglwidget()
的显式调用,或者如果你想尝试新的东西,使用 rgl::setupKnitr(autoprint = TRUE)
并只处理 rgl
图形像基本图形,由块选项 fig.keep
等控制
编辑添加: 版本 0.102.7 修复了已知的 webgl=TRUE
问题。