Kesalahan dalam plot.new (): margin gambar terlalu besar di R


111

Saya baru mengenal R tetapi saya telah membuat banyak plot korelasi dengan kumpulan data yang lebih kecil. Namun, ketika saya mencoba memplot kumpulan data besar (2gb +), saya dapat menghasilkan plot dengan baik, tetapi legenda tidak muncul. Ada saran? atau alternatif?

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)     

Kesalahan dalam plot.new(): margin gambar terlalu besar

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

1
Anda harus memberi kami contoh yang dapat direproduksi yang menunjukkan penyakit yang Anda alami. stackoverflow.com/questions/12765668/…
Roman Luštrik

Saya mencoba semua cara di atas, dan tidak ada yang berhasil. Namun, sesekali (setidaknya untuk pemula seperti saya), data dalam matriks atau data.frame dapat dipaksakan menjadi beberapa jenis yang tidak Anda sadari. Jika demikian, gunakan "as.numeric" sebelum data Anda untuk memastikan ini bukan masalahnya.
pApaAPPApapapa

Jawaban:


86

Saya menduga masalahnya adalah bahwa area angka kecil 2 yang dibuat oleh layout()panggilan Anda tidak cukup besar untuk memuat hanya margin default, apalagi plot.

Sebelum garis yang menyebabkan masalah coba:

par(mar = rep(2, 4))

lalu plot gambar kedua

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

Anda harus bermain-main dengan ukuran margin di file par() panggilan yang saya tunjukkan untuk mendapatkan hak ini. Anda mungkin juga perlu menambah ukuran perangkat sebenarnya yang Anda rencanakan.

Tip terakhir, simpan par()default sebelum mengubahnya, jadi ubah par()panggilan Anda yang ada ke:

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

kemudian di akhir plotting lakukan

par(op)

Ah, terima kasih atas klarifikasinya. Saya memanipulasi layout (matrix ()) sebagai gantinya. Hargai bantuannya!
Steve Hwang

2
ini adalah petunjuk yang tepat untuk saya. Saya harus memperbesar ukuran gambar, atau menurunkan resolusi dipng(filename="myfile.png", res=150, width = 1000, height = 1000)
vanao veneri

146

Kesalahan ini dapat terjadi di Rstudio hanya karena panel "Plot" Anda hampir tidak terlalu kecil. Coba perbesar "File, Plot, Paket, Bantuan, Penampil" Anda dan lihat apakah itu membantu!


8
Ini memecahkan masalah saya! Saya telah memperluas jendela "Lingkungan", mengecilkan jendela "Plot", dll. Saya hanya perlu memperluas jendela. Terima kasih!
Rock Lee

Setuju, ini memengaruhi RStudio saya juga, dan hanya memperluas jendela membantu.
Kingz

Kadang-kadang saya tidak sengaja berakhir dengan sejumlah panel karena menggunakan par (). par(mfrow=c(1,1))dapat mengatur ulang Anda ke satu panel.
Matt

1
itu adalah kesalahan yang sangat aneh bagi saya karena saya baru mengenal R. Tidak pernah mengalami masalah sebelumnya dengan bahasa / IDE lain di mana tata letak IDE akan memengaruhi kode saya !!
Adarsha

Luar biasa, ini juga berhasil untuk saya. Namun kesalahan yang aneh!
Mohammad

70

Jika Anda mendapatkan pesan ini di RStudio, mengklik gambar 'sapu' "Bersihkan Semua Plot" di tab Plot dan mencoba plot () lagi mungkin berhasil.

masukkan deskripsi gambar di sini


1
Ini jawaban terbaik.
NewbieDave

15
graphics.off()
rawr

Saya suka jawaban ini
O.rka

Ini benar-benar jawaban terbaik. Terima kasih.
merve bıçakçı

24

Ini terkadang terjadi di RStudio. Untuk mengatasinya, Anda dapat mencoba merencanakan ke jendela eksternal (khusus Windows):

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

1
Ini adalah jawaban yang lebih baik daripada membeli monitor yang lebih besar. Ada juga perintah x11 () yang seharusnya berfungsi di Linux.
Ron Jensen - Kita semua adalah Monica

1
Jawaban paling tepat yang pernah ada. Terima kasih.
TeeKea

ada yang setara untuk MacOSX?
TeYaP

Saya mencoba solusi ini ketika saya mendapatkan Error in plot.new() : figure margins too largekesalahan di RStudio saat menggambar OLS-CUSUM, dan itu bekerja secara ajaib. Banyak terima kasih jobligado.
Erdogan CEVHER

19

Saya mendapatkan kesalahan ini di R Studio, dan hanya diperbaiki dengan membuat sidebar lebih besar dengan mengklik dan menyeret tepinya dari kanan ke kiri.


2
inilah pemenangnya. Mengapa ini bahkan sesuatu?
colin

2
Tidak ada solusi lain yang berhasil untuk saya kecuali yang ini.
zsad512

1
Tidak tahu bagaimana atau mengapa, tapi ini juga satu-satunya solusi yang berhasil untuk saya.
TheSciGuy

10

Periksa apakah objek Anda adalah daftar atau vektor. Untuk melakukan ini, ketik is.list(yourobject). Jika ini benar, coba ganti namanya x<-unlist(yourobject). Ini akan membuatnya menjadi vektor yang bisa Anda plot.


Ini melakukannya untuk saya (menggunakan png()/ dev.off()di Rstudio).
knowah


3

Saya menemukan kesalahan ini hari ini. Awalnya, saya mencoba menampilkannya ke .jpegfile dengan lebar dan tinggi rendah.

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

Kemudian saya meningkatkan lebar dan tinggi menjadi:

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

Kesalahannya tidak ada. :)

Anda juga bisa bermain dengan resolusi, jika resolusinya tinggi, Anda membutuhkan lebih banyak lebar dan tinggi.



2

Saya berjuang dengan kesalahan ini selama berminggu-minggu (menggunakan RStudio). Saya mencoba memindahkan jendela plot lebih besar dan lebih kecil, tetapi itu tidak selalu membantu. Ketika saya memindahkan (menyeret) aplikasi ke monitor saya yang lebih besar, masalahnya hilang! Saya tercengang ... begitu banyak jam terbuang ... Saya tahu kode saya benar ...


0

Kanvas RStudio Plots membatasi lebar dan tinggi plot. Namun jika Anda membuat plot Anda dari potongan kode Rmarkdown , itu bekerja tanpa batasan bidang kanvas karena area plot diatur sesuai dengan ukuran kertas.

Misalnya:

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

Saya menemukan kesalahan yang sama hari ini. Saya telah mencoba tombol "Hapus semua Plot", tetapi tombol itu memberi saya kesalahan yang sama. Kemudian trik ini berhasil untuk saya, Coba tingkatkan area plot dengan menyeret. Ini pasti akan membantu Anda.


0

Saya baru saja menggunakan Hapus semua plot sekali lagi memberikan perintah plot dan itu sangat membantu


1
Selamat datang di SO. Tolong dapatkah Anda menjelaskan mengapa ini adalah jawabannya.
Mike Poole

0

Jika margin rendah, maka lebih baik memulai dengan perangkat plotting baru:

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

Anda tidak akan pernah mendapatkan kesalahan margin, kecuali Anda memplot sesuatu yang besar yang tidak dapat diakomodasi.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.