Обновление ответа от Yihui, чтобы отразить изменения в Rmarkdown за последние несколько лет, а также отказ от файлов Rnw.
Как указано в параметрах фрагмента, для подрисунков необходимо установить несколько дополнительных параметров в заголовке фрагмента:
fig.subcap
— это список подписей к подрисункам.
fig.ncol
: количество столбцов субфигурок
out.width
: выходная ширина фигур. Обычно вы устанавливаете это 100%, деленное на количество подстолбцов.
Для подрисунков также требуется пакет LaTeX subfig
. Поэтому строка \usepackage{subfig}
должна быть включена в YAML, или, если вы используете внешний текстовый шаблон, вы можете добавить его в этот файл.
Вот базовый шаблон:
---
output: pdf_document
header-includes:
- \usepackage{subfig}
---
```{r fig-sub, fig.cap='two plots', fig.subcap=c('one plot', 'the other one'), out.width='.49\\linewidth', fig.asp=1, fig.ncol = 2}
plot(1:10)
plot(rnorm(10), pch=19)
```
Использование с ggplot2
Если вы рисуете субфигуры, которые содержат несколько графиков ggplot, это может привести к беспорядку, поскольку они не выстраиваются между графиками. Вы можете проверить этот пост здесь о том, как использовать cowplot, чтобы заставить ggplots иметь одинаковые размеры.
Этот пост о стеке с переполнением поможет вам убедиться, что все графики выровнены, как показано на изображении ниже:
Предоставление списка подрисунков
Просто поделился этим как возможным расширением субфигур. Мне нравится использовать их для того, чтобы скармливать им список цифр. Возможно, вы создали функцию, которую нужно запустить в четырех разных пробных группах или в четырех разных местах. Например, вот список из четырех городов Великобритании:
```{r}
locations <- c("Southampton, UK", "London, UK", "Bristol, UK", "Birmingham,
```
Затем этот список можно использовать в fig.sub
и lapply
для создания списка субфигурок. Если вам нужно запустить
```{r fig-sub-2, fig.cap='A collection of maps', fig.subcap= locations, out.width='.49\\linewidth', fig.asp=1, fig.ncol = 2}
library(ggmap)
lapply(locations, function(x)
ggmap(get_map(x))
)
```
Это делает субфигуры достаточно надежными. Если мне нужно запустить мою модель в дополнительной паре городов, все, что мне нужно сделать, это добавить дополнительные значения в список location
, и подцифры будут одинаковой длины.
person
Michael Harper
schedule
03.03.2018
plot
наknit_hooks$set(plot = function(x, options) {...})
и расположить графики так, как вам хочется. Единственная проблема заключается в том, что вам может потребоваться некоторое время, чтобы понять внутренности: github.com/yihui/knitr/blob/master/R/hooks-latex.R Мне кажется хорошей идеей поддерживать внутренние субфигуры, и вы можете отправить запрос на добавление функции здесь: github.com/yihui/knitr/issues Спасибо! - person Yihui Xie   schedule 23.09.2012