在 knitr 中并排绘制两个图形而不改变 mfrow?

在 knitr 中并排绘制两个图形而不改变 mfrow?

我想使用 knitr 并排绘制 2 个图形。我知道我可以使用 par(mfrow=c(1,2)),但我已经做了很多工作来使图形保持原样。我见过这个 (带有文本和针织块的两列布局),但它对我来说不起作用。

理想情况下,我想做这样的事情(但失败了):

\documentclass[a4paper,11pt]{article}
\begin{document}
\begin{frame}
   \begin{columns}
      \begin{column}{.5\linewidth}
          <<echo=FALSE,eval=TRUE,out.width='4cm',out.height='4cm'>>=
             plot(1:10)
          @
      \end{column}
      \begin{column}{.5\linewidth}
          <<echo=FALSE,eval=TRUE,out.width='4cm',out.height='4cm'>>=
             plot(1:10)
          @
      \end{column}
    \end{columns}
\end{frame}
\end{document}

使用 Sweave,我可以执行以下操作:

<<plot1, echo=FALSE,eval=TRUE>>=
    plot(1:10)
@

\begin{figure}[htbp]
  \begin{minipage}[h]{0.5\linewidth}
    \begin{center}

        <<label=figplotFlowSingle,echo=FALSE>>=
            <<plot1>>
        @
    \subcaption{Default plot1}
    \label{fig:plot1}
    \end{center}
  \end{minipage}
  \begin{minipage}[h]{0.5\linewidth}
    \begin{center}

        <<plot2, echo=FALSE,eval=TRUE>>=
             plot(1:10)
        @

        <<label=plot22,echo=FALSE>>=
            <<plot2>>
         @
    \subcaption{Default plot2}
    \label{fig:plot2}
    \end{center}
  \end{minipage}
  \caption{}
  \label{fig:plot1and2}
\end{figure}

答案1

如果您想要的是两个并排的数字,您可以将代码放在一个块中并设置fig.show='hold'适当的宽度,例如

\documentclass{article}

\begin{document}  

<<test, out.width='4cm', out.height='4cm', fig.show='hold'>>=
plot(1:10)
plot(rnorm(100))
@

\end{document}

如果要将图形居中,只需添加选项fig.align='center'。如果要添加标题,可以使用fig.cap。请参阅文档以了解所有可能的选项这里

相关内容