制作全幻灯片大小的 ggplot2 输出 {Xaringan}
Making full-slide sized ggplot2 output {Xaringan}
有没有办法让 ggplot 图表包含 {xaringan} 演示文稿的所有幻灯片?如果我将其导出为 .png 并将其作为背景图片,我可以做到这一点。但是直接从块输出呢?
R-markdown本质上只是一种编写markdown文档(如html、pdf等)的方法。从本质上讲,这允许我们使用标准的 markdown、html 和 LaTeX 来解决这些类型的问题。
正如一辉的书rmarkdown-cookbook中所描述的那样,我们可以在放置图形时利用这一点。因此,一种方法是简单地保存图像,然后使用标准乳胶命令显示它
```{r image_save, include = FALSE}
library(ggplot2)
p <- ggplot(pressure, aes(x = temperature, y = pressure)) + geom_point()
ggsave('myimage.png', p, dpi = 300) #change dpi for better resolution. 300 is standard
```
\begin{figure}[!p]
\includegraphics{myimage.png}
\caption{some latex caption, because someone may prefer this}
\label{reference_label:1}
\end{figure}
严格来说,这并不能保证情节在它自己的页面上,因为其他图像可能包含在同一页面上.对于更严格的裁决,可以在 header 中包含一个文件以包含不同的包或覆盖用于图形放置的底层代码,例如 this question.
的答案中所建议的
易辉也在同书解释how one can add code to the header
output:
pdf_document:
includes:
in_header: "preamble.tex"
例如,序言可以只包含
% Contents of preamble.tex
\makeatletter
\@fpsep\textheight
\makeatother
这是链接线程中的第一个建议答案。请注意,如果其中包含 latex 包,markdown 编译器可能无法识别这一点,并且 latex 可能需要按照 Yihui 在 chapter 6.11.
中的描述写入 latex 块中
我确信仅使用 knitr::opts_chunk$set(fig.pos = '!p')
就可以获得类似的结果,但这似乎并没有给出预期的结果。我也确信可以使用 html 做类似的事情,但我不是 html 专家。
最小的可重现示例
---
title: "Untitled"
output: pdf_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
# Including Plots
Some more text
```{R, include = FALSE}
library(ggplot2)
p <- ggplot(pressure, aes(x = temperature, y = pressure)) + geom_point()
ggsave('myimage.png', p)
```
\begin{figure}[!p]
\includegraphics{myimage.png}
\caption{some latex caption, because someone may prefer this}
\label{reference_label:1} %Label which could be referenced somewhere else in the document.
\end{figure}
text after latex figure
# Random text following the graphis
Here you can place even more information! It is still the same page!
底部是一个最小的例子。
解释: xaringan 的默认 CSS 样式在顶部和底部有 16 像素的填充,在顶部和底部有 64 像素的填充双方。您可以通过创建一个 CSS 文件来覆盖它(例如 my_css.css
包含以下行:
.remark-slide-content.full-slide-fig{
padding: 0px 0px 0px 0px;
width: 100%;}
然后在 YAML 中引用 CSS 文件。请务必指定幻灯片比例和 fig.asp()
块选项相同(例如,宽屏输出为 16 x 9)。显然我仍然缺少另一个 xaringan 默认 CSS 包含填充,因为如果你使用彩色背景,幻灯片顶部仍然会有一小块背景......但是您可以通过将背景颜色设置为白色或透明并使用 out.width="95%"
作为块选项来避免这种情况。
最后,请务必指定给定的幻灯片使用 class full-slide-fig
。
---
title: "Full-slide figures with **xaringan**"
date: "`r Sys.Date()`"
output:
xaringan::moon_reader:
css: "my_css.css"
nature:
ratio: "16:9"
---
class: full-slide-fig
```{r setup, include = FALSE}
knitr::opts_chunk$set(
fig.asp = 9/16,
fig.align = 'center',
echo = F,
out.width = "95%",
dpi= 300
)
library(ggplot2)
```
```{r}
ggplot(data = mtcars, mapping = aes(disp, mpg))+
geom_point()
```
---
有没有办法让 ggplot 图表包含 {xaringan} 演示文稿的所有幻灯片?如果我将其导出为 .png 并将其作为背景图片,我可以做到这一点。但是直接从块输出呢?
R-markdown本质上只是一种编写markdown文档(如html、pdf等)的方法。从本质上讲,这允许我们使用标准的 markdown、html 和 LaTeX 来解决这些类型的问题。
正如一辉的书rmarkdown-cookbook中所描述的那样,我们可以在放置图形时利用这一点。因此,一种方法是简单地保存图像,然后使用标准乳胶命令显示它
```{r image_save, include = FALSE}
library(ggplot2)
p <- ggplot(pressure, aes(x = temperature, y = pressure)) + geom_point()
ggsave('myimage.png', p, dpi = 300) #change dpi for better resolution. 300 is standard
```
\begin{figure}[!p]
\includegraphics{myimage.png}
\caption{some latex caption, because someone may prefer this}
\label{reference_label:1}
\end{figure}
严格来说,这并不能保证情节在它自己的页面上,因为其他图像可能包含在同一页面上.对于更严格的裁决,可以在 header 中包含一个文件以包含不同的包或覆盖用于图形放置的底层代码,例如 this question.
的答案中所建议的
易辉也在同书解释how one can add code to the header
output:
pdf_document:
includes:
in_header: "preamble.tex"
例如,序言可以只包含
% Contents of preamble.tex
\makeatletter
\@fpsep\textheight
\makeatother
这是链接线程中的第一个建议答案。请注意,如果其中包含 latex 包,markdown 编译器可能无法识别这一点,并且 latex 可能需要按照 Yihui 在 chapter 6.11.
中的描述写入 latex 块中我确信仅使用 knitr::opts_chunk$set(fig.pos = '!p')
就可以获得类似的结果,但这似乎并没有给出预期的结果。我也确信可以使用 html 做类似的事情,但我不是 html 专家。
最小的可重现示例
---
title: "Untitled"
output: pdf_document
---
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
```
# Including Plots
Some more text
```{R, include = FALSE}
library(ggplot2)
p <- ggplot(pressure, aes(x = temperature, y = pressure)) + geom_point()
ggsave('myimage.png', p)
```
\begin{figure}[!p]
\includegraphics{myimage.png}
\caption{some latex caption, because someone may prefer this}
\label{reference_label:1} %Label which could be referenced somewhere else in the document.
\end{figure}
text after latex figure
# Random text following the graphis
Here you can place even more information! It is still the same page!
底部是一个最小的例子。
解释: xaringan 的默认 CSS 样式在顶部和底部有 16 像素的填充,在顶部和底部有 64 像素的填充双方。您可以通过创建一个 CSS 文件来覆盖它(例如 my_css.css
包含以下行:
.remark-slide-content.full-slide-fig{
padding: 0px 0px 0px 0px;
width: 100%;}
然后在 YAML 中引用 CSS 文件。请务必指定幻灯片比例和 fig.asp()
块选项相同(例如,宽屏输出为 16 x 9)。显然我仍然缺少另一个 xaringan 默认 CSS 包含填充,因为如果你使用彩色背景,幻灯片顶部仍然会有一小块背景......但是您可以通过将背景颜色设置为白色或透明并使用 out.width="95%"
作为块选项来避免这种情况。
最后,请务必指定给定的幻灯片使用 class full-slide-fig
。
---
title: "Full-slide figures with **xaringan**"
date: "`r Sys.Date()`"
output:
xaringan::moon_reader:
css: "my_css.css"
nature:
ratio: "16:9"
---
class: full-slide-fig
```{r setup, include = FALSE}
knitr::opts_chunk$set(
fig.asp = 9/16,
fig.align = 'center',
echo = F,
out.width = "95%",
dpi= 300
)
library(ggplot2)
```
```{r}
ggplot(data = mtcars, mapping = aes(disp, mpg))+
geom_point()
```
---