1

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.

acn
  • 65
  • 1
  • 5
  • How about starting with `par(mfrow=c(1,2))` to make both plots appear in the same figure? You'll probably want to modify the width so they don't get squeezed into the space of one figure. – user2554330 Mar 10 '19 at 09:25

1 Answers1

5

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)
```

enter image description here

Michael Harper
  • 14,721
  • 2
  • 60
  • 84