如何在 knitr 中并排打印表格和图形

如何在 knitr 中并排打印表格和图形

我看到很多关于如何在没有 knitr 的情况下将图形与表格并排放置的帖子,以及关于在 knitr 中将表格放在表格旁边、将图形放在图形旁边的帖子,但没有关于如何在 knitr 中将图形放在表格旁边的帖子。

我尝试的所有方法都出现“不在外部模式”错误。

下面是一个简单的例子。我希望图形和文本并排显示,这样就不会占用太多的垂直空间。

在此先感谢您的帮助。

\documentclass{article}

\begin{document}
<<Setup, echo=F, message=F>>=
opts_chunk$set(echo=F, message=F)
@

Some text.

<<MyTable, results='asis'>>=
library(xtable)
my.data <- data.frame(x=runif(10), y=runif(10))
xtable(my.data, caption="My table")
@

<<MyGraph, out.width='3in', out.height='3in', fig.width=3, fig.height=3>>=
library(ggplot2)
qplot(x=runif(50), y=runif(50)) + ggtitle("My graph")
@

Some text.

\end{document}

\documentclass{article}\usepackage[]{graphicx}\usepackage[]{color}
%% maxwidth is the original width if it is less than linewidth
%% otherwise use linewidth (to make sure the graphics do not exceed the margin)
\makeatletter
\def\maxwidth{ %
  \ifdim\Gin@nat@width>\linewidth
    \linewidth
  \else
    \Gin@nat@width
  \fi
}
\makeatother

\definecolor{fgcolor}{rgb}{0.345, 0.345, 0.345}
\newcommand{\hlnum}[1]{\textcolor[rgb]{0.686,0.059,0.569}{#1}}%
\newcommand{\hlstr}[1]{\textcolor[rgb]{0.192,0.494,0.8}{#1}}%
\newcommand{\hlcom}[1]{\textcolor[rgb]{0.678,0.584,0.686}{\textit{#1}}}%
\newcommand{\hlopt}[1]{\textcolor[rgb]{0,0,0}{#1}}%
\newcommand{\hlstd}[1]{\textcolor[rgb]{0.345,0.345,0.345}{#1}}%
\newcommand{\hlkwa}[1]{\textcolor[rgb]{0.161,0.373,0.58}{\textbf{#1}}}%
\newcommand{\hlkwb}[1]{\textcolor[rgb]{0.69,0.353,0.396}{#1}}%
\newcommand{\hlkwc}[1]{\textcolor[rgb]{0.333,0.667,0.333}{#1}}%
\newcommand{\hlkwd}[1]{\textcolor[rgb]{0.737,0.353,0.396}{\textbf{#1}}}%

\usepackage{framed}
\makeatletter
\newenvironment{kframe}{%
 \def\at@end@of@kframe{}%
 \ifinner\ifhmode%
  \def\at@end@of@kframe{\end{minipage}}%
  \begin{minipage}{\columnwidth}%
 \fi\fi%
 \def\FrameCommand##1{\hskip\@totalleftmargin \hskip-\fboxsep
 \colorbox{shadecolor}{##1}\hskip-\fboxsep
     % There is no \\@totalrightmargin, so:
     \hskip-\linewidth \hskip-\@totalleftmargin \hskip\columnwidth}%
 \MakeFramed {\advance\hsize-\width
   \@totalleftmargin\z@ \linewidth\hsize
   \@setminipage}}%
 {\par\unskip\endMakeFramed%
 \at@end@of@kframe}
\makeatother

\definecolor{shadecolor}{rgb}{.97, .97, .97}
\definecolor{messagecolor}{rgb}{0, 0, 0}
\definecolor{warningcolor}{rgb}{1, 0, 1}
\definecolor{errorcolor}{rgb}{1, 0, 0}
\newenvironment{knitrout}{}{} % an empty environment to be redefined in TeX

\usepackage{alltt}
\IfFileExists{upquote.sty}{\usepackage{upquote}}{}
\begin{document}
\begin{knitrout}
\definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\color{fgcolor}\begin{kframe}


{\ttfamily\noindent\bfseries\color{errorcolor}{\#\# Error: object 'chunk' not found}}\end{kframe}
\end{knitrout}

Some text.

\begin{kframe}
\begin{alltt}
\hlkwd{library}\hlstd{(xtable)}
\hlstd{my.data} \hlkwb{<-} \hlkwd{data.frame}\hlstd{(}\hlkwc{x}\hlstd{=}\hlkwd{runif}\hlstd{(}\hlnum{10}\hlstd{),} \hlkwc{y}\hlstd{=}\hlkwd{runif}\hlstd{(}\hlnum{10}\hlstd{))}
\hlkwd{xtable}\hlstd{(my.data,} \hlkwc{caption}\hlstd{=}\hlstr{"My table"}\hlstd{)}
\end{alltt}
\end{kframe}% latex table generated in R 3.0.2 by xtable 1.7-3 package
% Mon Oct 13 22:04:21 2014
\begin{table}[ht]
\centering
\begin{tabular}{rrr}
  \hline
 & x & y \\ 
  \hline
1 & 0.51 & 0.94 \\ 
  2 & 0.02 & 0.63 \\ 
  3 & 0.40 & 0.15 \\ 
  4 & 0.41 & 0.22 \\ 
  5 & 0.10 & 0.03 \\ 
  6 & 0.63 & 0.41 \\ 
  7 & 0.63 & 0.43 \\ 
  8 & 0.61 & 0.16 \\ 
  9 & 0.06 & 0.62 \\ 
  10 & 0.15 & 0.20 \\ 
   \hline
\end{tabular}
\caption{My table} 
\end{table}


\begin{knitrout}
\definecolor{shadecolor}{rgb}{0.969, 0.969, 0.969}\color{fgcolor}\begin{kframe}
\begin{alltt}
\hlkwd{library}\hlstd{(ggplot2)}
\hlkwd{qplot}\hlstd{(}\hlkwc{x}\hlstd{=}\hlkwd{runif}\hlstd{(}\hlnum{50}\hlstd{),} \hlkwc{y}\hlstd{=}\hlkwd{runif}\hlstd{(}\hlnum{50}\hlstd{))} \hlopt{+} \hlkwd{ggtitle}\hlstd{(}\hlstr{"My graph"}\hlstd{)}
\end{alltt}
\end{kframe}
\includegraphics[width=3in,height=3in]{figure/MyGraph} 

\end{knitrout}

Some text.

\end{document}

答案1

尝试将相应的代码放入单个块并使用。请参阅 @Yihui (的创建者)fig.show='hold'的回答中的详细信息:knitrhttps://tex.stackexchange.com/a/117872/48376

相关内容