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.