这些并不是真正的“子图”,它们只是并排的图。因此,您可以通过更多输入来获得您想要的内容:
```{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/ https://yihui.org/knitr/demo/reference/,但我不确定这是否值得这么麻烦。另一种有希望的方法是使用gridExtra::grid.arrange
功能,尽管我不确定它是否允许您想要的布局。
在表明需要真正的 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
```
给出这个输出: