我使用knitr的knit2html
函数生成带有嵌入式rgl图的html(交互式)
使用命令
>knit2html("myfile.rmd")
我的R降价:
```{r setup}
library(rgl)
knit_hooks$set(webgl = hook_webgl)
```
```{r testgl, webgl=TRUE}
x <- sort(rnorm(1000))
y <- rnorm(1000)
z <- rnorm(1000) + atan2(x,y)
plot3d(x, y, z, col=rainbow(1000))
```
sessionInfo()
提供rgl_0.95.1227
和knitr_1.9.4
我无法在生成的html中看到3D图。 检查了html javascript控制台,并说没有声明rglclass。
它未包含在html文件中。两者都没有生成CanvasMatrix.js
。
我错过了什么?
我看到knitr的hook_webgl
包裹着rgl&#39; s writeWebGL
writeWebGL(dir = dirname(name), filename = name, template = NULL,
prefix = prefix, snapshot = FALSE, commonParts = commonParts)
似乎commonParts
争论被设置为假?
hook_webgl
的函数knitr
function (before, options, envir)
{
if (before || rgl::rgl.cur() == 0)
return()
name = tempfile("rgl", ".", ".html")
on.exit(unlink(name))
dpi = options$dpi/options$fig.retina
rgl::par3d(windowRect = 100 + dpi * c(0, 0, options$fig.width,
options$fig.height))
Sys.sleep(0.05)
prefix = gsub("[^[:alnum:]]", "_", options$label)
prefix = sub("^([^[:alpha:]])", "_\\1", prefix)
rgl::writeWebGL(dir = dirname(name), filename = name, template = NULL,
prefix = prefix, snapshot = FALSE, commonParts = commonParts)
commonParts <<- FALSE
res = readLines(name)
res = res[!grepl("^\\s*$", res)]
paste(gsub("^\\s+", "", res), collapse = "\n")
}