2012-10-29 6 views
3

그래서 Sweave를 사용하여 몇 개의 그래프가 포함 된 pdfs를 만들었습니다. 필자는 pdf를 충분히 얻을 수 있지만, 많은 레이어를 사용하여 만든 것으로 보입니다. 따라서 Acrobat 또는 Reader에서 파일을 열 수 없습니다. 내가 할 때, 글자 그대로 문서에 점 하중을 볼 수 있습니다.Sweave에서 PDF를 평평하게 만들기

Sweave에서 pdf를 평평하게하는 방법이 있나요? 그렇게 부피가 크지 않습니까?

이미 당신은 아마 전환해야 언급 한 바와 같이

(나는 RStudio를 사용하고 주. 내가 아마 다른 것을 사용한다 알고 있지만, 나는 부드럽게 아직이 근무하고있다 아무것도 발견하지 않았습니다.)

+0

현재 사용중인 그래픽의 형식은 무엇입니까? – mnel

+0

... 좋은 질문이 있습니까?R 코드에서 직접 생성됩니다. – RickyB

+0

기본값을 사용하는 경우 eps 및 pdf입니다. http://www.statistik.lmu.de/~leisch/Sweave/FAQ.html 장치를 쉽게 지정할 수있는 'knitr'으로 변환 할 것을 제안합니다 더 작을'png' 또는'jpeg'를 사용하십시오. – mnel

답변

4

Gavin이 말했듯이 이렇게하려면 다른 이점이 있지만 knitr으로 전환 할 필요가 없습니다. 그러나 저장 및 코드 포함을 직접 작성하지 않아도됩니다. Sweave는 당신을 위해 그것을 할 수 있습니다. 초기 문서 인 경우 :

\documentclass{article} 
\usepackage[american]{babel} 
\begin{document} 

<<>>= 
n <- 100000 
DF <- data.frame(x=rnorm(n), y=rnorm(n)) 
@ 

<<gen_fig, fig=TRUE>>= 
plot(DF) 
@ 

\end{document} 

을 그럼 그냥 그림 청크에 인수를 변경하여, 당신이 대신 PDF의 PNG 얻을 수 있습니다 :이 간단한 예에서

<<gen_fig, fig=TRUE, png=TRUE, pdf=FALSE>>= 
plot(DF) 
@ 

을, 내 마지막을 축소 685K ~ 70K의 PDF

4

knitr으로 바꾸면 pdfs와 다른 형식을 훨씬 더 멋지게 교체 할 수 있습니다. 특히, 보라 :

  • knitr 사이의 transition guide
  • global options을 sweave : 당신이 PDF 파일, 고해상도 PNG 및 저해상도 PNG 파일 사이를 쉽게 교체 할 수있는 방법을.
  • caching : 필요한 경우에만 숫자를 생성하십시오. knitr에 대한 fig=TRUE을 지정할 필요가 없습니다

    \documentclass{article} 
    \begin{document} 
    
    <<gen_fig, dev='png'>>= 
    n <- 100000 
    DF <- data.frame(x=rnorm(n), y=rnorm(n)) 
    plot(DF) 
    @ 
    
    \end{document} 
    

    : 여기

은 PNG 장치를 사용하는 예입니다. graphics 패키지의 PNG 장치의 이미지 품질이 충분하지 않으면 다른 PNG 장치로 쉽게 전환 할 수 있습니다. dev='CairoPNG' 또는 'Cairo_png' Sweave에서는 똑같은 일을하기 위해 더 많은 코드를 작성합니다.

5

이렇게하는 데는 많은 이점이 있지만 Knitr으로 전환 할 필요는 없습니다.

하나 개의 솔루션으로 플롯 여부를 고려하는 당신이

<<gen_fig, echo=true, eval=true>>= 
png("path/to/fig/location/my_fig.png") 
plot(1:10) 
dev.off() 
@ 

\includegraphics[options_here]{path/to/fig/location/my_fig} 

또 다른 옵션을 위해 그것을 할 Sweave에 의존한다 생산 후보다는 스스로를 포함 할 플롯 파일을 준비하는 단지입니다 " 포인트 톤 "은 유용한 수치입니다 - 모든 포인트를 볼 수 있습니까? 관심 장소의 밀도입니까? 다른 방법으로는 hexbin 패키지를 통해 플로팅하거나 점의 2 차원 밀도를 생성하고 점의 저밀도 세트로 플로팅하는 방법이 있습니다. ggplot2 패키지에는이 기능이 많이 내장되어 있습니다 (예 : 예를 들어 stat__bin2d() 또는 stat_binhex()