Plot.new () 'de hata: R' de şekil kenar boşlukları çok büyük


111

R'de yeniyim ama daha küçük veri kümeleriyle çok sayıda korelasyon grafiği yaptım. Bununla birlikte, büyük bir veri setini (2gb +) çizmeye çalıştığımda, grafiği gayet güzel üretebilirim, ancak efsane görünmüyor. Herhangi bir tavsiye? veya alternatifler?

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)     

Hata plot.new(): şekil marjları çok büyük

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

1
Bize yaşadığın hastalıkları gösteren tekrarlanabilir bir örnek vermelisin. stackoverflow.com/questions/12765668/…
Roman Luštrik

Yukarıdakilerin hepsini denedim ve hiçbir şey işe yaramadı. Bununla birlikte, arada bir (en azından benim gibi bir acemi için), bir matris veya data.frame'deki veriler, farkında olmadığınız bir türe zorlanmış olabilir. Bu durumda, sorunun bu olmadığından emin olmak için verilerinizden önce "as.numeric" kullanın.
pApaAPPApapapa

Yanıtlar:


86

Sorunun, layout()aramanızın oluşturduğu küçük şekil bölgesi 2'nin , bırakın bir grafiği, sadece varsayılan marjları içerecek kadar yeterince büyük olmadığından şüpheleniyorum .

Soruna neden olan çizgiden önce şunu deneyin:

par(mar = rep(2, 4))

sonra ikinci resmi çizin

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

Kenar boşluklarının boyutu ile oynamanız gerekecek. par() doğru yapmak için gösterdiğim görüşmedeki . Ayrıca üzerine çizdiğiniz gerçek aygıtın boyutunu da artırmanız gerekebilir.

Son bir ipucu, par()değiştirmeden önce varsayılanları kaydedin , bu nedenle mevcut par()çağrınızı şu şekilde değiştirin :

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

öyleyse planlamanın sonunda yap

par(op)

Ah, açıklama için teşekkürler. Onun yerine düzeni (matrix ()) değiştiriyordum. Yardım için minnettarız!
Steve Hwang

2
bu benim için doğru ipucuydu. Görüntü boyutunu png(filename="myfile.png", res=150, width = 1000, height = 1000)
büyütmem

146

Bu hata, Rstudio'da sadece "Grafikler" bölmenizin çok küçük olması nedeniyle oluşabilir. "Dosyalarınızı, Grafiklerinizi, Paketlerinizi, Yardımınızı, Görüntüleyicinizi" yakınlaştırmayı deneyin ve yardımcı olup olmadığına bakın!


8
Bu benim sorunumu çözdü! "Çevre" penceresini genişletmiş, "Grafikler" vb. Pencereyi küçültmüştüm. Pencereyi genişletmem gerekiyordu. Teşekkür ederim!
Rock Lee

Kabul edildi, bu benim RStudio'yu da etkiledi ve sadece pencereyi genişletmek yardımcı oldu.
Kingz

Bazen par () kullandığım için yanlışlıkla birkaç bölme ile karşılaşıyorum. par(mfrow=c(1,1))sizi bir bölmeye sıfırlayabilir.
Matt

1
Bu benim için çok garip bir hataydı çünkü R'de yeniyim. IDE düzeninin kodumu etkileyeceği diğer diller / IDE ile daha önce hiç sorun yaşamadım !!
Adarsha

Harika, bu benim için de çalıştı. Yine de çok garip bir hata!
Mohammad

70

Bu mesajı RStudio'da alırsanız, Plots sekmesindeki 'süpürge sopası' figürüne tıklamak ve plot () tekrar denemek işe yarayabilir.

görüntü açıklamasını buraya girin


1
Bu en iyi cevap.
NewbieDave

15
graphics.off()
rawr

Bu cevabı beğendim
O.rka

Bu gerçekten en iyi cevap. Teşekkürler.
merve bıçakçı

24

Bu bazen RStudio'da olur. Bunu çözmek için harici bir pencereye (yalnızca Windows) çizim yapmayı deneyebilirsiniz:

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

1
Bu, daha büyük bir monitör satın almaktan daha iyi bir cevaptır. Ayrıca Linux üzerinde çalışması gereken bir x11 () komutu da vardır.
Ron Jensen - Hepimiz Monica'yız

1
Şimdiye kadarki en uygun cevap. Teşekkürler.
TeeKea

MacOSX için herhangi bir eşdeğeri?
TeYaP

Bu çözümü Error in plot.new() : figure margins too largeRStudio'da OLS-CUSUM'u çizerken hata aldığımda denedim ve mucizevi bir şekilde çalıştı. Çok teşekkürler jobligado.
Erdoğan CEVHER

19

Bu hatayı R Studio'da aldım ve kenar çubuğunu tıklayıp sağdan sola sürükleyerek kenar çubuğunu büyütmekle düzeltildi.


2
bu kazanan oldu. Bu neden böyle bir şey?
colin

2
Bunun dışında diğer çözümlerin hiçbiri benim için işe yaramadı.
zsad512

1
Nasıl ve neden bilmiyorum ama bu benim için işe yarayan tek çözümdü.
TheSciGuy

10

Nesnenizin bir liste mi yoksa bir vektör mü olduğunu kontrol edin. Bunu yapmak için yazın is.list(yourobject). Bu doğruysa, yeniden adlandırmayı deneyin x<-unlist(yourobject). Bu, onu çizebileceğiniz bir vektör haline getirecektir.


Bu benim için yaptı ( Rstudio'da png()/ kullanarak dev.off()).
knowah

5

görüntü açıklamasını buraya girin

RStudio kullanıyorsanız bu alanı yakınlaştırmanız yeterlidir.


3

Bugün bu hatayı buldum. Başlangıçta, onu .jpegdüşük genişlik ve yüksekliğe sahip bir dosyaya çıkarmaya çalışıyordum .

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

Daha sonra genişliği ve yüksekliği şu şekilde artırdım:

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

Hata orada değildi. :)

Çözünürlükle de oynayabilirsiniz, çözünürlük yüksekse daha fazla genişliğe ve yüksekliğe ihtiyacınız var.



2

Bu hatayla haftalarca uğraştım (RStudio kullanarak). Çizim penceresini gitgide küçültmeyi denedim, ancak bu sürekli olarak yardımcı olmadı. Uygulamayı daha büyük monitörüme taşıdığımda (sürüklediğimde) sorun ortadan kalktı! Şaşkına döndüm ... boşa harcanan çok saat ... Kodumun doğru olduğunu biliyordum ...


0

RStudio Plots tuvali, çizim genişliğini ve yüksekliğini sınırlıyor. Ancak grafiğinizi Rmarkdown kod yığınından yaparsanız , çizim alanı kağıt boyutuna göre ayarlandığından tuval alanı sınırlaması olmadan çalışır.

Örneğin:

    ```{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

Bugün aynı hatayı buldum. "Clear all Plots" düğmesini denedim, ancak bana aynı hatayı veriyordu. Sonra bu hile benim için çalıştı , çizim alanını sürükleyerek artırmaya çalışın. Kesinlikle size yardımcı olacaktır.


0

Sadece Clear all plots'u kullandım, sonra tekrar plot komutunu verdim ve yardımcı oldu


1
SO'ya hoş geldiniz. Lütfen bunun neden cevap olduğunu açıklayabilir misiniz?
Mike Poole

0

Marj düşükse, yeni çizim cihazıyla başlamak her zaman daha iyidir:

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

Yerleştirilemeyen büyük bir şey çizmediğiniz sürece asla marj hatası almazsınız.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.