CephBirk
CephBirk

Reputation: 6720

knitr: how to reference a plot from a multi-plot chunk

I have a .Rnw document where I want to reference a plot from a multi-plot chunk. How do I do this?

Example:

\documentclass{article}
\begin{document}

<<single_chunk, fig.cap="hi">>=
plot(1:5)
@

I can reference this single chunk fine! See \ref{fig:single_chunk}.

<<multichunk, fig.cap="hello">>=
plot(1:10)
plot(10:1)
@

The first figure is great, but \ref{fig:multichunk}. Try again \ref{fig:multichunk-1}.

\end{document}

Both these attempts result in ??.

Upvotes: 7

Views: 544

Answers (1)

Eike P.
Eike P.

Reputation: 3493

Just have a look at the generated *.tex file! Here's the relevant part (I took the freedom to align it a bit more nicely than knit does):

\begin{knitrout}
\definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\color{fgcolor}\begin{kframe}
\begin{alltt}
\hlkwd{plot}\hlstd{(}\hlnum{1}\hlopt{:}\hlnum{10}\hlstd{)}
\end{alltt}
\end{kframe}
\begin{figure}
  \includegraphics[width=\maxwidth]{figure/multichunk-1}
  \caption[hello]{hello}
  \label{fig:multichunk1}
\end{figure}

\begin{kframe}\begin{alltt}
\hlkwd{plot}\hlstd{(}\hlnum{10}\hlopt{:}\hlnum{1}\hlstd{)}
\end{alltt}
\end{kframe}
\begin{figure}
  \includegraphics[width=\maxwidth]{figure/multichunk-2}
  \caption[hello]{hello}
  \label{fig:multichunk2}
\end{figure}

So, if you look closely, you'll note that the multiplot figures are named fig:multichunk1 and fig:multichunk2. And indeed, if you reference these (\ref{fig:multichunk1}, ...), everything works fine.

Upvotes: 3

Related Questions