Как использовать графику ggplot2 внутри мини-страницы с помощью Sweave?

Вот мой код, который должен отображать графику рядом друг с другом, но не может этого сделать. На самом деле часть ткачества не интерпретируется.

\begin{figure}[h]
\begin{center} 
\begin{minipage}[t]{.485\linewidth} % 
 <<fig=true,echo=false>>=
 print(graph2)
 @
 \newline{\color{red}{\caption{\label{idx}Graph one}}}    
 \end{minipage}
 \hspace{.02\linewidth}
  \begin{minipage}[t]{.485\linewidth}% 
  <<fig=true,echo=false>>=
 print(graph2)
 @
 \newline{\color{red}{ \caption{\label{pb}Graph two}}}
 \end{minipage}

 \end{center}
 \end{figure}

graph1,graph2 - это просто любой заданный график, созданный qplot. Оба графика прекрасно работают за пределами мини-страницы. Я знаю, что эта тема уже существовала, но почему-то я не мог найти решения, которые работали бы для других, подобных этому один.

Кроме того, у меня есть небольшой побочный вопрос: каков аргумент, препятствующий тому, чтобы Sweave генерировал как .eps, так и .pdf? В мануале просто указано, что это по умолчанию. Однако я уверен, что использую только pdflatex и, следовательно, не нуждаюсь в .eps.


person Matt Bannert    schedule 30.07.2010    source источник
comment
Вам не хватает знака @ после второго экземпляра print(graph2) ?   -  person nullglob    schedule 30.07.2010
comment
В файле .Rnw \SweaveOpts{eps=FALSE, pdf=TRUE} или в вызове Sweave: Sweave(file, driver=RweaveLatex(eps=FALSE))   -  person rcs    schedule 30.07.2010
comment
Спасибо. код отредактирован, второй @ не пропал. к сожалению не проблема. Спасибо за ответ на мой побочный вопрос :)   -  person Matt Bannert    schedule 30.07.2010


Ответы (2)


Эх, на самом деле это читерство, но в блоге Джона я нашел хороший обходной путь. Он не использует мини-страницу, но делает это с помощью subfigure. У Subfigure не было проблем со Sweave. Хороший!

Если вас интересует это решение, проверьте это сайт. Тем не менее, я хотел бы знать, как это сделать с мини-страницей :)

person Matt Bannert    schedule 03.08.2010

Замена \hspace на \hfill помогает. Графики взяты из документации ggplot. minipage также хорошо подходит для размещения рядом двух xtable или таблицы и графика.

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

\begin{figure}[h]
\begin{center} 

\begin{minipage}[t]{.49\linewidth} % 
<<fig=true,echo=false>>=
require(ggplot2)

df <- data.frame(gp = factor(rep(letters[1:3], each = 10)),
                 y = rnorm(30))
library(plyr)
ds <- ddply(df, .(gp), summarise, mean = mean(y), sd = sd(y))

ggplot(df, aes(x = gp, y = y)) +
   geom_point() +
   geom_point(data = ds, aes(y = mean),colour = 'red', size = 3)

@
\newline{\color{red}{\caption{\label{idx}Graph one}}}    
\end{minipage}
\hfill
\begin{minipage}[t]{.49\linewidth}
<<fig=true,echo=false>>=
ggplot() +
  geom_point(data = df, aes(x = gp, y = y)) +
  geom_point(data = ds, aes(x = gp, y = mean),
                        colour = 'red', size = 3) +
  geom_errorbar(data = ds, aes(x = gp, y = mean,
                    ymin = mean - sd, ymax = mean + sd),
                    colour = 'red', width = 0.4)
@
\newline{\color{red}{ \caption{\label{pb}Graph two}}}
\end{minipage}

\end{center}
\end{figure}

\end{document}

введите здесь описание изображения

person ROLO    schedule 22.08.2012
comment
Когда я создаю PDF-файл с помощью Sweave из R Studio, я получаю сообщение: Проблемы: 1 плохой ящик. Тем не менее, вывод в формате PDF генерируется, и цифры выглядят нормально! Спасибо! - person Paulo S. Abreu; 31.03.2016