Создание полноразмерного вывода ggplot2 {Xaringan}

Есть ли способ сделать так, чтобы график ggplot занимал весь слайд с презентацией {xaringan}? Я могу это сделать, если экспортирую его в .png и размещу как фоновое изображение. Но как насчет прямо из вывода фрагментов?


person Alberson Miranda    schedule 14.08.2020    source источник


Ответы (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()
```

---
person Evan M    schedule 16.02.2021

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!
person Oliver    schedule 15.08.2020
comment
но именно этого решения и пытается избежать Альберсон. Довольно неэлегантно сохранить сюжет на диск и сразу же зачитать его обратно в презентацию. Кроме того, xaringan - это вывод HTML, поэтому решение LaTeX с выводом: pdf_document () не имеет отношения - person Evan M; 16.02.2021