Include figure labels in R markdown for side by si

2019-08-31 16:57发布

问题:

In my rmarkdown document, I want to include plots side by side to save space. For example, I want to include:

plot(rnorm(100))
hist(runif(100))

or

plot(rnorm(100))
hist(runif(100))

I don't really care if there is one caption for both subplots or one caption for each subplot. I just really want to include figures side by side and have some way to refer to them (Figure 1, etc). Does anyone have suggestions? I have this in my header:

header-includes: - \usepackage{subfig}

When I don't have "fig.show='hold' " in my chunks, all of my captions work fine but my plots do not show up side by side. When I add fig.show='hold', the layout looks great but the captions disappear.

回答1:

Adapting my answer from this post, you can combine cross-referencing by including the output format bookdown::pdf_document2". Note that I am manually appending the subfigure letter to the cross reference i.e. \@ref(fig:fig-sub)a:

---
output: bookdown::pdf_document2
header-includes:
   - \usepackage{subfig}
---  

See Figures \@ref(fig:fig-sub)a and \@ref(fig:fig-sub)b

```{r fig-sub, echo = FALSE, 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)
```