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.