Errore in plot.new (): margini della figura troppo grandi, grafico a dispersione


109

Ho cercato una soluzione in diverse domande e ho provato ciò che è stato suggerito ma non ho trovato una soluzione per farlo funzionare.

Ogni volta che voglio eseguire questo codice dice sempre:

Errore in plot.new (): margini della figura troppo grandi

e non so come risolverlo. Ecco il mio codice:

par(mfcol=c(5,3))
hist(RtBio, main="Histograma de Bio Pappel")
boxplot(RtBio, main="Diagrama de Caja de Bio Pappel")
stem(RtBio)
plot(RtBio, main="Gráfica de Dispersión")

hist(RtAlsea, main="Histograma de Alsea")
boxplot(Alsea, main="Diagrama de caja de Alsea")
stem(RtAlsea)
plot(RtTelev, main="Gráfica de distribución de Alsea")

hist(RtTelev, main="Histograma de Televisa")
boxplot(telev, main="Diagrama de Caja de Televisa")
stem(Telev)
plot(Telev, main="Gráfica de dispersión de Televisa")

hist(RtWalmex, main="Histograma de Walmex")
boxplot(RtWalmex, main="Diagrama de caja de Walmex")
stem(RtWalmex)
plot(RtWalmex, main="Gráfica de dispersión de Walmex")

hist(RtIca, main="Histograma de Ica")
boxplot(RtIca, main="Gráfica de caja de Ica")
stem(RtIca)
plot(RtIca, main="Gráfica de dispersión de Ica")

Cosa posso fare?



2
I margini sembrano essere troppo grandi per la tua immagine. Questo può accadere se hai una piccola finestra di trama. In ogni caso, la tua descrizione non è sufficiente per diagnosticare il problema. Potremmo usare un esempio riproducibile o uno screenshot della tua sessione R con la finestra del grafico.
Roman Luštrik

Ho il mio caso, ha contribuito a mettere a punto con un piccolo sottoinsieme dei dati che dovevano essere rappresentate graficamente, come plot(df[1,1:3], df2[1,1:3])- e poi ho capito che quello che io in realtà volevo fare è quello di plot(unlist(df[1,1:3]), unlist(df2[1,1:3]))vedere anche: stackoverflow.com/a/17074060/6018688
fabianegli

Risposte:


164

Ogni volta che crei dei grafici potresti ricevere questo errore - " Error in plot.new() : figure margins too large". Per evitare tali errori è possibile prima controllare l' par("mar")output. Dovresti ottenere:

[1] 5.1 4.1 4.1 2.1

Per cambiare quella scrittura:

par(mar=c(1,1,1,1))

Questo dovrebbe correggere l'errore. Oppure puoi modificare i valori di conseguenza.

Spero che questo funzioni per te.


2
come fai a sapere esattamente quali valori sono all'interno dei margini? E perché dici che dovrei ottenere [1] 5.1 4.1 4.1 2.1 ma poi mi dici di cambiarlo a tutti gli 1?
Herman Toothrot

2
Ho riscontrato lo stesso problema con RStudio e quando ho inserito par("mar")ho recuperato la stessa stringa esatta, [1] 5.1 4.1 4.1 2.1quindi l'ho inserito par(mar=c(1,1,1,1))ma poi plot () non tracciava nulla, quindi ho dovuto chiudere sia RStudio che il terminale. Dopo aver riaperto RStudio, è tornato alla normalità.
noobninja

2
Incontrare lo stesso problema anche in R markdown in RStudio. Né la soluzione di Guest R né il riavvio di @noobninja lo hanno risolto per me.
SC.

Stai ricevendo questo errore a causa di un problema di layout dell'interfaccia utente di RStudio, non di qualcosa di sbagliato nel codice. La seconda risposta lo ha risolto per me.
Nicole Sullivan

1
@Nicole Sullivan ho ricevuto questo errore anche senza RStudio. Ho fatto come descritto e funziona. Grazie @djhurio!
Gwang-Jin Kim

106

Ciò può accadere quando il pannello del grafico in RStudio è troppo piccolo per i margini del grafico che stai cercando di creare. Prova a espanderlo e quindi esegui di nuovo il codice.

L'interfaccia utente di RStudio genera un errore quando il riquadro del grafico è troppo piccolo per visualizzare il grafico: RStudio con il pannello della trama troppo piccolo

La semplice espansione del pannello della trama risolve il bug e visualizza il grafico: RStudio con il pannello della trama espanso


5
Funziona davvero .. la semplice espansione dell'area della trama aiuta
Jiapeng Zhang

3
Sì, il ridimensionamento dei pannelli in RStudio funziona. È un bug di RStudio causato quando si riduce a icona il lato destro dell'interfaccia utente facendo scorrere il pannello di trama chiuso.
Nicole Sullivan

questo funziona effettivamente nella maggior parte dei casi. c'è una piccola minoranza di casi in cui i margini sono davvero così piccoli che anche se massimizzi questa finestra non hai soluzione a questo problema
Dimitrios Zacharatos

27

Invocare dev.off()a fare RStudio aprire un nuovo dispositivo grafico con le impostazioni predefinite lavorato per me. HTH.


1
Potresti spiegare come si fa?
Swift Arrow

20

Se ricevi questo messaggio in RStudio, fai clic sulla figura "manico di scopa" "Cancella tutti i grafici" nella scheda Plots e prova di nuovo a plot ().

Inoltre eseguire il comando

graphics.off()

11
scrivi queste tre righegraphics.off() par("mar") par(mar=c(1,1,1,1))
Hiren

6

Cancella le trame e prova a eseguire di nuovo il codice ... Per me ha funzionato


1

Solo una nota a margine. A volte questo errore di "margine" si verifica perché si desidera salvare una figura ad alta risoluzione (ad esempio dpi = 300o res = 300) in R.
In questo caso, ciò che è necessario fare è specificare la larghezza e l'altezza . (A proposito, ggsave() non lo richiede.)

Ciò causa l'errore di margine:

# eg. for tiff()
par(mar=c(1,1,1,1))
tiff(filename =  "qq.tiff",
     res = 300,                                                 # the margin error.
     compression = c( "lzw") )
# qq plot for genome wide association study (just an example)
qqman::qq(df$rawp, main = "Q-Q plot of GWAS p-values", cex = .3)
dev.off()

Questo risolverà l'errore di margine:

# eg. for tiff()
par(mar=c(1,1,1,1))
tiff(filename =  "qq.tiff",
     res = 300,                                                 # the margin error.
     width = 5, height = 4, units = 'in',                       # fixed
     compression = c( "lzw") )
# qq plot for genome wide association study (just an example)
qqman::qq(df$rawp, main = "Q-Q plot of GWAS p-values", cex = .3)
dev.off()
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.