2014-09-09 3 views
4

내 패키지는 여러 개의 그래프를 생성하며, 한 번에 여러 개를 생성합니다.dev.new()를 사용하여 니트릴 비 네트에 플롯을 표시하려면 어떻게합니까?

x11 또는 windows 장치를 사용하면 문제가 없습니다. knitr 이미지가 포함 된 비 네트를 만듭니다.

그러나 CRAN 저장소에 제출하려면 플랫폼 독립적 인 플로팅에 dev.new을 사용해야합니다. x11 또는 windowsdev.new으로 바꾸면 내 비네팅에 이미지가 표시되지 않습니다.

해결 방법이 있습니까? 처음에는 이것이 RStudio에서 플로팅과 관련이 있다고 생각했지만 새로운 인수 dev.new(noRStudioGD = FALSE)을 사용하면 도움이되지 않았습니다. 또한 명령 줄에서 패키지를 빌드해도 문제가 해결되지 않았습니다.

건배,

(윈도우 7 64) (R 3.1.1) (RStudio 0.98.507)

+2

:

지금, /vignettes에서 .Rnw 파일에 뭔가를 넣어. 언급 한 장치는 대화 형 사용을위한 것이며, 대화 형이 아닌 자체 세션에서 실행되는 knitr과의 상호 작용을 어떻게 계획합니까? – baptiste

답변

2

짧은 대답은, 당신은 모든 dev.new()를 사용하지 않는 (또는 dev.off() 또는 dev.whatever ...). 더 긴 대답을 원할 경우 문제가 실제로 무엇인지 보여주는 최소한의 재현 가능한 예를 포함 시키십시오.

+0

감사합니다 Yihui 및 baptiste, 당신은 당연히 죽었어요, 나는 전혀 새로운 장치를 열 필요가 없었습니다. 건배, Tom –

+1

여러 플롯을 생성하는 분석 함수가 있다면 어떻게됩니까? 대화식으로 작업하려면'dev.new()'를 사용해야합니다. 그리고 그것은 단지 하나의 플롯을 생성하더라도, 나는'dev.new()'를 수동으로 할 필요없이 이전 플롯을 오버라이드하지 않기를 좋아합니다 ...'knitr'을 사용하는 그런 함수를 얻을 수있는 방법이 없습니까? – jhin

0

나는 똑같은 어려움을 겪었습니다. knitr=가 네트 건물에 사용 입니다

p1 <- function(x, knitr=FALSE){ 
    plot(x) 
    if(!knitr) dev.new() 
    plot(x^2) 
} 

인수 : 여기 일을 한 가지 방법입니다. knitr 당신을 위해 그것을하지, 일반적으로이 장치를 직접 열 필요가 없습니다

%\VignetteEngine{knitr::knitr} 
%\VignetteIndexEntry{p1} 
\documentclass{article} 

\begin{document} 

<<setup, include=FALSE>>= 
library("knitr") 
### Set global chunk options 
opts_chunk$set(eval=TRUE, 
    ## text results 
    echo=TRUE, 
    results=c('markup', 'asis', 'hold', 'hide')[1], 
    ## plots 
    fig.path=c('figure', 'figure/minimal-')[1], 
    fig.keep=c('high', 'none', 'all', 'first', 'last')[1], 
    fig.align=c('center', 'left', 'right', 'default')[1], 
    fig.show=c('hold', 'asis', 'animate', 'hide')[1], 
    dev=c('pdf', 'png', 'tikz')[1], 
    fig.width=7, fig.height=7, #inches 
    fig.env=c('figure', 'marginfigure')[1], 
    fig.pos=c('', 'h', 't', 'b', 'p', 'H')[1] 
    ) 
@ 

<<plot1>> 
library("myPackage") 
x <- seq(10) 
p1(x, knitr=TRUE) 
@ 

\end{document}