pdf - 从函数`scatter3d`和RGL输出的R Markdown PDF中的纯图像
问题描述
我正在创建一本书,bookdown
并且我已经从和运行了该scatter3d()
功能。car
rgl
我已经读过 3D 图像可以在 HTML 中交互式实现(这里),但是,我需要在 PDF 输出中实现一个简单的纯图像。
我该怎么做?
让我们使用这个例子:
scatter3d(mpg~hp+qsec|factor(cyl), data=mtcars, surface=FALSE, residuals=TRUE,
parallel=FALSE, bg="white", axis.scales=TRUE, grid=TRUE, ellipsoid=TRUE)
编辑 1
通过使用 @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 时,我看不到图:
问题出在哪里?
解决方案
有时您可以使用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),但您的显示器将支持上限。除非你有一个非常大的数字,否则你应该能够比默认值更大。
推荐阅读
- react-native - 样式 React Native 开关组件
- python - 如何用单个变量替换列表中的所有元素
- apache-spark - 为什么 spark 中的“收集”动作会触发数据收集到驱动程序?
- amazon-web-services - 尝试创建连接 AWS 胶水时 AWS CDK 访问被拒绝
- javascript - 如何将此值设置为变量?
- c++ - 如何将不同类型的对象保存到单个文件中并根据需要读取它们?
- java - 使用 apache pdfbox 生成 pdf 时跨多个页面的动态表
- python - 无法通过前端注册。一直说错误的请求
- docker - 如何设置正确的 nginx.conf 以使用 alpine docker 映像作为代理运行?
- csv - Lua - 查找/删除 .csv 文件中的重复行以创建纯/唯一列表