Figures captions and labels in knitr

2019-02-01 11:25发布

问题:

I'm new to Knitr. I'm trying to make a report using r chunks, and I can't figure out how to use captions and labels to reference the figure later on. Here's an example of what I would like to do:

---
title: "Plotting"

author: "xx"

date: '2015-08-10'

output: pdf_document
---
```{r figs, echo=FALSE, fig.width=7,fig.height=6,fig.cap="plotting example"}

    par(mfrow=c(2,2))
    plot(1:10, col=2)
    plot(density(runif(100, 0.0, 1.0)))
    plot(runif(100, 0.0, 1.0),type="l")
```

in Figure \ref{fig:figs} we see examples of plotting in R.

I would like to have a caption "Plotting example", and have a label, so I can use Figure \ref{fig.label} in the text. I have tried fig.cap and fig.lp, none of them works. I would appreciate if if someone can help.

回答1:

You can achieve this by including fig_caption: yes in the header:

---
title: "Plotting"
output:
  pdf_document:
    fig_caption: yes
---

```{r figs, echo=FALSE, fig.width=7,fig.height=6,fig.cap="\\label{fig:figs}plotting example"}
par(mfrow=c(2,2))
plot(1:10, col=2)
plot(density(runif(100, 0.0, 1.0)))
plot(runif(100, 0.0, 1.0),type="l")
```

in Figure \ref{fig:figs} we see examples of plotting in R.

Note that the figure caption label should be included in the caption with a double backslash, as shown above.



回答2:

Above solution by @RHertel did not initially work for me. The problem was that there was not enough spacing between two consecutive chunks with figures in them. Adding more lines(2) between the consecutive chunks in the Rmd file did the trick for me.