Это на самом деле не «подфигуры», это просто цифры рядом друг с другом. Таким образом, вы можете получить то, что вы хотите, набрав:
```{r, echo = FALSE}
library(ggplot2)
df <- data.frame(
x = rnorm(30),
y = rnorm(30)
)
p1 <- p2 <- p3 <- ggplot(df, aes(x, y)) + geom_point()
```
```{r echo = FALSE, fig.height=1, fig.width=1}
print(p1)
```
```{r echo = FALSE, fig.height=2, fig.width=1}
print(p2)
```
```{r echo = FALSE, fig.height=3, fig.width=1}
print(p3)
```
Возможно, вы могли бы немного автоматизировать это, используя идеи из https://yihui.org/knitr/demo/reference/, но я не уверен, что оно того стоит беда. Другим многообещающим подходом было бы использование функции gridExtra::grid.arrange
, хотя я не уверен, разрешит ли она макет, который вы хотите.
EDITED TO ADD после комментария, указывающего, что требуются истинные подфигуры LaTeX:
Это сложнее, потому что, как вы видели, fig.height
не обрабатывается отдельно для каждой подфигуры. Я думаю, что вы можете получить желаемую высоту, добавив дополнительные поля. Чтобы получить полный контроль над вертикальным центрированием, необходимо отключить обрезку фигур с помощью параметра YAML
output:
pdf_document:
fig_crop: FALSE
. При использовании этого параметра этот код
```{r, echo = FALSE, fig.height=3, fig.width=1,fig.subcap=c("first", "second", "third"),fig.cap="Main"}
library(ggplot2)
df <- data.frame(
x = rnorm(30),
y = rnorm(30)
)
p1 <- p2 <- p3 <- ggplot(df, aes(x, y)) + geom_point()
p1 + theme(plot.margin = margin(t = 1, b = 1, unit = "in") + theme_get()$plot.margin)
p2 + theme(plot.margin = margin(t = 1/2, b = 1/2, unit = "in") + theme_get()$plot.margin)
p3
```
дает следующий вывод: