2011-10-13 2 views
2

나는 비슷한 게시물의 예제를 따라 왔지만 아무 소용이 없습니다. 다음은 내가 본 문제의 예입니다. tmp.Rnw에서ggplot2 및 sweave - 플롯이 주 pdf 대신 Rplots에 있습니까?

저장 : tmp.co.r에서

\documentclass[10pt]{article} 
\title{Reproducible Example} 
\begin{document} 
\maketitle 
\begin{center} 

<<echo=FALSE,results=hide>>= 
library(ggplot2) 
plot.to.print = qplot(1:10, 1:10) 
@ 

\section{No Figure Below This Section Title} 
<<<fig=true>>= 
print(plot.to.print) 
@ 

\end{center} 
\end{document} 

, 나는 다음과 같은 코드를 넣어 :

Sweave("tmp.Rnw",stylepath=T) 

을 그리고 나는이 같은 TEX 파일 생성 :

/../../2.12.1/bin/R --no-save < tmp.co.r 

그리고 나와있는 tmp.tex 파일에서 pdflatex를 사용하십시오.

결과는 제목, 섹션 이름 및 R 코드가 있지만 그림은없는 tmp.pdf입니다. 그러나 tpl.pdf에 원하는 그림이 포함 된 Rplots.pdf 파일도 생성됩니다.

나는 초보자를 실수로 만들고 있지만 확실하지는 않습니다. 어떤 팁?

+0

그림 덩어리에 이름을 지정해 보았습니까? – baptiste

답변

1

귀하의 무화과 청크에 여분 <이있는 것이 문제입니다.

이렇게하면 <fig=TRUE처럼 보이므로 fig은 실제로 올바르게 TRUE로 설정되지 않습니다. .tex 파일에 올바른 includegraphics 줄이없는 것을 확인할 수 있습니다.

왜 당신이 Rplots.pdf을 얻는 것은 다소 복잡하지만, 알아 두어야 할 가치가 있습니다. 첫째, 그래픽을 생성하는 모든 청크는 원하는 그래픽 유형마다 추가 시간으로 실행됩니다. 그래서 만약 당신이 pdf 파일을 만들면 (현재의 기본값이라고 생각합니다), 두 번 실행됩니다; 당신이 pdf와 eps를 만들면 3 번 실행됩니다. 처음 실행하면 그래픽 장치를 열지 않고 실행됩니다. 나는 왜 그것이 그 시간에 달리는 지 실제로 알지 못한다. 그러나 그렇다. 여러 파일의 경우 각 파일을 차례로 열어 개별적으로 실행해야합니다.

따라서 가장 좋은 방법은 수행 한 작업을 수행하고 모든 코드를 실행하여 하나의 청크에 그림을 작성한 다음 청크에 그림을 그릴 fig=TRUE; 이렇게하면 여러 번 실행되는 코드가 최소화됩니다. 그러나 임의의 숫자를 사용하거나 fig=TRUE 청크에서 항목을 증가시키는 경우주의하십시오. 여러 번 실행되기 때문에 예상대로 작동하지 않을 것입니다.

둘째, 그래픽 장치를 지정하지 않고 그래픽을 만드는 코드를 실행하면 코드가 작동하기 위해 기본 그래픽 형식이 열립니다. 대화 형으로 실행하면 창에 그림이있는 창이 나타납니다.비 대화식으로 실행하면 기본값은 일반적으로 pdf 파일을 열고, 기본 이름은 Rplots.pdf입니다. 이 작업은 그림을 만드는 모든 청크에서 발생하므로이 파일은 사용자가 작성한 모든 그림이 포함 된 다중 페이지 pdf가됩니다.

마지막으로 코드가 한 번만 실행되도록 fig=TRUE 메커니즘 대신 R 코드를 사용하여 그림을 만드는 방법을 선호 할 수 있습니다. 도움이되는 기능을 만들어 최소화 할 수는 있지만, 일반적으로 조금 더 부기가됩니다. 분명히 AFLP 패키지 (Thierry의 대답 참조)에는 이와 같은 기능이 있지만 사용하지는 못했습니다. 한 번에 여러 개의 플롯을 작성하는 경우 Sweave FAQ A.9에서 권장되는 것과 비슷한 방식으로 자신 만의 글을 쓸 수 있습니다.

마지막으로, 나는 당신이 <를 입력하면 중간에 커서 당신에게 <<>>=을 제공 RNW 모드에서 이맥스를 사용하는 볼 (수정 구슬 ...에 동료), 그래서 입력 << 당신에게 <<<>>=을 제공합니다.

+0

감사합니다. 여분의 "<"였고, 네, Rnw 모드에서 Emacs를 사용했기 때문입니다. – khoda

2

이 하나

<< label = figPlot1, include = FALSE >>= 
plot.to.print = qplot(1:10, 1:10) 
print(plot.to.print) 
@ 


\begin{figure} 
\begin{center} 
<< label = fig1, fig = TRUE, echo = FALSE >>= 
<<figPlot1>> 
@ 
\end{center} 
\caption{Your Caption} 
\label{fig:figPlot1} 
\end{figure} 
+0

동일한 출력을 생성합니다. 그림이있는 Rplots.pdf와 텍스트가있는 tmp.pdf. – khoda

+0

@Khoda : 내 수정 된 답변보기. – MYaseen208

1

가에 사용할 수있는 AFLP 패키지에서 ggsave.latex() 함수를 한 번 봐 가지고 시도 R을-포지

install.packages("AFLP", repos="http://R-Forge.R-project.org") 

는 그런 다음 Sweave 파일은 다음에 간단하게

\documentclass[10pt]{article} 
\title{Reproducible Example} 
\begin{document} 
\maketitle 

<<echo=FALSE,results=hide>>= 
library(ggplot2) 
#just imports the function you need without loading the entire package 
ggsave.latex <- AFLP:::ggsave.latex 

plot.to.print = qplot(1:10, 1:10) 
@ 

\section{No Figure Below This Section Title} 
<<result = tex>>= 
ggsave.latex(plot.to.print, caption = "Your caption", label = "ThisIsTheLabel") 
@ 
\end{document} 

ggsave.latex가 그림 환경을 설정합니다. 그리고 이것은 하나의 청크 안에 여러 개의 그림이나 다른 LaTeX 출력을 생성 할 수 있습니다.