Marta Karas
Marta Karas

Reputation: 5155

R knitr - include graphics (ggplot2 object rendered in R code ) directly in a defined place

I am making my first steps with knitr, trying to generate a raport. In the raport, I include R code which generates a ggplot2 object that I want to be included directly below some text. To make it more detailed, the graphic is a pair of two separated plots, which I want to be placed parallelly, one next to another.

So far, I have been dealing with by using the R code: producing and saving a .pdf picture, and then reading this picture from file and including it in the report by \includegraphics command. However, it is no more a solution for me - I want the plot to be generated simultaneously with the report by the R code (in particular: not to be saved anywhere as a .pdf)

However, the code I tried to use did not work properly - it generates the 2 plots, but they are however:

1) incorrectly placed - 2 pages below (which is even not the end of the document!)

2) I don't know how to place them in one row, with the defined size.

Please be of some help! Thank you in advance!! [below my not working porperly R code]

\textit{Pic 1 title} Some pic description

\begin{figure}[h]


\subfigure[pic1 name]{

<<echo = F, eval = T, message=F, fig=TRUE>>=
# a function returning a ggplot2 object (with a proper parameters instead of "...")
plot.matrix.from.file(...)
@

% below there is a fragment of the code I used before (which includes a graphics directly from a .pdf file)
%\includegraphics[scale=0.4]{data/simulated.data/obs_pred_mean_Gini_r.pdf}
\label{pic1 label}
}


\subfigure[pic2 name]{

<<echo = F, eval = T, message=F>>=
# a function returning a ggplot2 object (with a proper parameters instead of "...")
plot.matrix.from.file(...)
@

% below there is a fragment of the code I used before (which includes a graphics directly from a .pdf file)
%\includegraphics[scale=0.4]{data/simulated.data/obs_pred_var_Gini_r.pdf}

\label{pic2 label}
}
\caption{caption for the pair of plots}


\end{figure}

Upvotes: 2

Views: 2520

Answers (1)

Yihui Xie
Yihui Xie

Reputation: 30114

I do not see any problems using the subcaption package. See example 104.

\documentclass{article}
\usepackage{subcaption}
\begin{document}

You can include sub-figures using the \textbf{subcaption} package. For example,
Figure \ref{fig:test} contains \ref{fig:test-a} and \ref{fig:test-b}.

\begin{figure}
  \begin{subfigure}{.5\textwidth}
  <<test-a, echo=FALSE, results='asis', fig.width=5, fig.height=5>>=
  plot(1:10)
  @
  \caption{This is Figure a. \label{fig:test-a}}
  \end{subfigure}
  \begin{subfigure}{.5\textwidth}
  <<test-b, echo=FALSE, results='asis', fig.width=5, fig.height=5>>=
  plot(rnorm(100))
  @
  \caption{This is Figure b. \label{fig:test-b}}
  \end{subfigure}
\caption{This figure contains two subfigures. \label{fig:test}}
\end{figure}

\end{document}

Output as expected:

subfigure and knitr

Upvotes: 3

Related Questions