Есть ли способ сделать так, чтобы график ggplot занимал весь слайд с презентацией {xaringan}? Я могу это сделать, если экспортирую его в .png и размещу как фоновое изображение. Но как насчет прямо из вывода фрагментов?
Создание полноразмерного вывода ggplot2 {Xaringan}
Ответы (2)
Ниже приведен минимальный пример.
Пояснение. Стиль CSS по умолчанию для xaringan имеет отступы 16 пикселей сверху и снизу и 64 пикселя по бокам. Вы можете обойти это, создав файл CSS (например, my_css.css
, содержащий следующие строки:
.remark-slide-content.full-slide-fig{
padding: 0px 0px 0px 0px;
width: 100%;}
Затем укажите ссылку на файл CSS в своем YAML. Обязательно укажите, что соотношение сторон слайда и параметры блока fig.asp()
одинаковы (например, 16 x 9 для широкоэкранного вывода). Очевидно, мне все еще не хватает другого CSS по умолчанию xaringan, содержащего отступы, потому что, если вы используете цветной фон, все равно будет небольшая полоса фона в верхней части слайда ... но вы можете избежать этого, установив цвет фона на белый или прозрачный и использование out.width="95%"
в качестве параметра фрагмента.
Наконец, не забудьте указать, что данный слайд использует класс 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()
```
---
R-markdown - это, по сути, просто метод для написания документов уценки (таких как html, pdf и т. Д.). По сути, это позволяет нам использовать стандартные уценки, 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}
Строго говоря, это не гарантирует, что сюжет находится на его собственной странице, так как другие изображения могут быть включены на ту же страницу. Для более строгого решения можно включить файл в заголовок, чтобы включить другой пакет, или перезаписать базовый код для размещения фигур, например, предложенный в ответах на этот вопрос.
Ихуи также объясняет как можно добавить код в шапку в той же книге.
output:
pdf_document:
includes:
in_header: "preamble.tex"
Преамбула может, например, включать только
% Contents of preamble.tex
\makeatletter
\@fpsep\textheight
\makeatother
что является первым предлагаемым ответом в связанной теме. Обратите внимание, что если один включает пакет latex, компилятор markdown может не распознать это, и, возможно, потребуется записать латекс в блоке latex, как описано Yihui в глава 6.11.
Я был уверен, что подобный результат можно получить, используя только 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!