plot.new () 오류 : R에서 그림 여백이 너무 큽니다.


111

저는 R을 처음 접했지만 더 작은 데이터 세트로 수많은 상관 관계 플롯을 만들었습니다. 그러나 큰 데이터 세트 (2GB +)를 플롯하려고하면 플롯을 잘 생성 할 수 있지만 범례가 표시되지 않습니다. 어떤 충고? 또는 대안?

library(gplots)
r.cor <- cor(r)
layout(matrix(c(1,1,1,1,1,1,1,1,2,2), 5, 2, byrow = TRUE))
par(oma=c(5,7,1,1))
cx <- rev(colorpanel(25,"yellow","black","blue"))
leg <- seq(min(r.cor,na.rm=T),max(r.cor,na.rm=T),length=10)
image(r.cor,main="Correlation plot Normal/Tumor data",axes=F,col=cx)
axis(1, at=seq(0,1,length=ncol(r.cor)), labels=dimnames(r.cor)[[2]], 
    cex.axis=0.9,las=2)
axis(2,at=seq(0,1,length=ncol(r.cor)), labels=dimnames(r.cor)[[2]],
     cex.axis=0.9,las=2)
image(as.matrix(leg),col=cx,axes=T)     

오류 plot.new(): 그림 여백이 너무 큼

tmp <- round(leg,2)
axis(1,at=seq(0,1,length=length(leg)), labels=tmp,cex.axis=1)

1
귀하가 겪고있는 질병을 보여주는 재현 가능한 예를 제공해야합니다. stackoverflow.com/questions/12765668/…
Roman Luštrik

위의 모든 것을 시도했지만 아무것도 작동하지 않았습니다. 그러나 가끔씩 (적어도 저와 같은 초보자에게는) 행렬이나 data.frame의 데이터가 사용자가 알지 못하는 유형으로 강제 변환 될 수 있습니다. 이 경우 데이터 앞에 "as.numeric"을 사용하여 이것이 문제가 아닌지 확인하십시오.
pApaAPPApapapa

답변:


86

문제는 layout()호출로 생성 된 작은 그림 영역 2 가 플롯은 말할 것도없고 기본 여백 만 포함 할만큼 충분히 크지 않다는 것입니다.

문제를 일으키는 라인이 나오기 전에 다음을 시도하십시오.

par(mar = rep(2, 4))

그런 다음 두 번째 이미지를 플로팅합니다.

image(as.matrix(leg),col=cx,axes=T)

이 문제를 해결하려면 par()내가 보여주는 통화 에서 여백의 크기 를 조정해야합니다. 플로팅 할 실제 장치의 크기를 늘려야 할 수도 있습니다.

마지막 팁은 par()기본값을 변경하기 전에 저장 하므로 기존 par()호출을 다음 과 같이 변경하십시오 .

op <- par(oma=c(5,7,1,1))

그런 다음 플로팅이 끝나면

par(op)

아, 해명 해주셔서 감사합니다. 대신 layout (matrix ())을 조작했습니다. 도움을 주셔서 감사합니다!
Steve Hwang

2
이것은 나에게 올바른 힌트였습니다. 나는 이미지 크기를 늘리거나에서 해상도를 감소했다png(filename="myfile.png", res=150, width = 1000, height = 1000)
vanao veneri

146

이 오류는 단순히 "Plots"창이 너무 작기 때문에 Rstudio에서 발생할 수 있습니다. "파일, 플롯, 패키지, 도움말, 뷰어"를 확대 해보고 도움이되는지 확인하십시오!


8
이것은 내 문제를 해결했습니다! "환경"창을 확장하고 "플롯"창 등을 축소했습니다. 창문을 확장해야 했어요. 감사합니다!
Rock Lee

동의했습니다. 이것은 내 RStudio에도 영향을 미쳤으며 창을 확장하는 것이 도움이되었습니다.
Kingz

때때로 par () 사용으로 인해 실수로 여러 개의 창으로 끝납니다. par(mfrow=c(1,1))하나의 창으로 재설정 할 수 있습니다.
매트

1
R을 처음 접했기 때문에 나에게는 매우 이상한 오류였습니다. IDE 레이아웃이 내 코드에 영향을 미치는 다른 언어 / IDE에서는 이전에 문제가 없었습니다 !!
Adarsha

훌륭합니다. 이것은 저에게도 효과적이었습니다. 그래도 그런 이상한 오류!
Mohammad

70

RStudio에서이 메시지가 표시되는 경우 Plots 탭에서 'broomstick'그림 "Clear All Plots"를 클릭 하고 plot ()을 다시 시도하면 작동 할 수 있습니다.

여기에 이미지 설명 입력


1
이것이 최고의 답변입니다.
NewbieDave

15
graphics.off()
rawr

나는이 대답 좋아
O.rka

이것은 정말 최고의 대답입니다. 감사.
bıçakçı MERVE

24

이것은 때때로 RStudio에서 발생합니다. 이를 해결하기 위해 외부 창에 플롯을 시도 할 수 있습니다 (Windows 전용).

windows() ## create window to plot your file
## ... your plotting code here ...
dev.off() 

1
이것은 더 큰 모니터를 사는 것보다 더 나은 대답입니다. Linux에서 작동해야하는 x11 () 명령도 있습니다.
론 젠슨 - 우리는 모니카 있습니다

1
지금까지 가장 적절한 대답. 감사.
TeeKea

MacOSX에 상응하는 것이 있습니까?
TeYaP

Error in plot.new() : figure margins too largeOLS-CUSUM을 그릴 때 RStudio에서 오류가 발생 했을 때이 솔루션을 시도했는데 기적적으로 작동했습니다. 많은 감사합니다 jobligado.
Erdogan CEVHER

19

R Studio에서이 오류가 발생했으며 가장자리를 오른쪽에서 왼쪽으로 클릭하고 드래그하여 사이드 바를 더 크게 만들어 간단히 수정했습니다.


2
이것이 승자였습니다. 왜이게 문제일까요?
colin

2
이 솔루션을 제외하고는 다른 솔루션 중 어느 것도 나를 위해 일하지 않았습니다.
zsad512

1
방법과 이유는 모르지만 이것이 저에게 효과가 있었던 유일한 솔루션이었습니다.
TheSciGuy

10

개체가 목록인지 벡터인지 확인합니다. 이렇게하려면을 입력하십시오 is.list(yourobject). 이것이 사실이면 이름을 바꾸십시오 x<-unlist(yourobject). 이것은 당신이 플로팅 할 수있는 벡터로 만들 것입니다.


이것은 나를 위해 ( Rstudio에서 png()/ 사용 dev.off()) 해냈습니다.
knowah 2015-06-23

5

여기에 이미지 설명 입력

RStudio를 사용하는 경우이 영역을 확대하면됩니다.


3

오늘이 오류를 발견했습니다. 처음에는 .jpeg너비와 높이가 낮은 파일 로 출력하려고했습니다 .

jpeg("method1_test.jpg", width=900, height=900, res=40)

나중에 너비와 높이를 다음과 같이 늘 렸습니다.

jpeg("method1_test.jpg", width=1900, height=1900, res=40)

오류가 없었습니다. :)

해상도로 재생할 수도 있습니다. 해상도가 높으면 너비와 높이가 더 필요합니다.



2

몇 주 동안이 오류로 고생했습니다 (RStudio 사용). 플롯 창을 더 크고 더 작게 이동해 보았지만 일관되게 도움이되지 않았습니다. 응용 프로그램을 더 큰 모니터로 옮겼을 때 (드래그) 문제가 사라졌습니다! 깜짝 놀랐습니다 ... 너무 많은 시간을 낭비했습니다 ... 내 코드가 정확하다는 것을 알았습니다 ...


0

RStudio Plots 캔버스는 플롯 너비와 높이를 제한합니다. 그러나 Rmarkdown 코드 청크 에서 플롯을 만들면 용지 크기에 따라 플롯 영역이 설정되므로 캔버스 필드 제한없이 작동합니다.

예를 들면 :

    ```{r}
#inside of code chunk in Rmarkdown
        grid <- par(mfrow=c(4, 5))
        plot(faithful, main="Faithful eruptions")
        plot(large.islands, main="Islands", ylab="Area")
        ...
        par(grid)
    ```

0

오늘도 같은 오류를 발견했습니다. "Clear all Plots"버튼을 시도했지만 동일한 오류가 발생했습니다. 그런 다음이 트릭이 저에게 효과적이었습니다. 드래그하여 플롯 영역을 늘리십시오. 확실히 도움이 될 것입니다.


0

나는 모든 플롯 지우기를 사용한 다음 다시 플롯 명령을 내렸고 도움이되었습니다.


1
SO에 오신 것을 환영합니다. 이것이 왜 답인지 설명해 주시겠습니까?
Mike Poole

0

마진이 낮 으면 항상 새 플로팅 장치로 시작하는 것이 좋습니다.

dev.new()
# plot()
# save your plot
dev.off()

수용 할 수없는 큰 것을 플롯하지 않는 한 여백 오류가 발생하지 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.