我正在使用bookdown
创建一本书,并且已经从scatter3d()
和car
运行了rgl
函数。
我已经阅读到3D图像可以用HTML(here)交互地实现,但是,我需要在PDF输出中实现简单的纯图像。
我该怎么办?
让我们使用以下示例:
scatter3d(mpg~hp+qsec|factor(cyl), data=mtcars, surface=FALSE, residuals=TRUE,
parallel=FALSE, bg="white", axis.scales=TRUE, grid=TRUE, ellipsoid=TRUE)
通过使用@ user2554330的答案,我创建了R Markdown文件(.Rmd):
---
title: "Untitled"
author: "Mario"
date: "1 July 2019"
output:
pdf_document: default
html_document: default
---
```{r echo=FALSE}
library(rgl)
library(car)
setupKnitr()
```
Here's a plot:
```{r echo=TRUE, dev="png", rgl=TRUE}
scatter3d(mpg~hp+qsec|factor(cyl), data=mtcars, surface=FALSE, residuals=TRUE,
parallel=FALSE, bg="white", axis.scales=TRUE, grid=TRUE, ellipsoid=TRUE)
```
但是,当我将.Rmd文件转换为PDF时,看不到该图:
出什么问题了?
答案 0 :(得分:0)
有时,您可以使用rgl.postscript()
从rgl图像创建PDF文件。当它起作用时,它将提供最好的质量,但是它并不总是起作用:不支持透明度等。
rgl.snapshot()
将生成当前rgl窗口的PNG图像。除非您可以将rgl窗口变大,否则可能看起来有点像素化。 (将虚拟窗口设置为大于屏幕大小会很好,但是rgl不支持非屏幕缓冲区,而Xvfb之类的东西往往不支持OpenGL绘制。)
knitr
可以安装的rgl
钩子使用这些钩子,因此您可以拥有这样的文档:
```{r echo=FALSE}
library(rgl)
library(car)
setupKnitr()
```
Here's a plot:
```{r rgl=TRUE, dev="png"}
scatter3d(mpg~hp+qsec|factor(cyl), data=mtcars, surface=FALSE, residuals=TRUE,
parallel=FALSE, bg="white", axis.scales=TRUE, grid=TRUE, ellipsoid=TRUE)
```
您可以使用块选项dpi
(每英寸点数,默认为72),但显示屏上将支持上限。除非您的数字很大,否则您应该可以比默认值更大。