Errore persistente di stato grafico non valido quando si utilizza ggplot2


119

Credo che il mio dataframe sia a posto e il mio codice a posto. In effetti, ho eliminato parti del dataframe e la maggior parte del codice grafico per rendere le cose il più semplici possibile. Ma ancora, ottengo:

Error in .Call.graphics(C_palette2, .Call(C_palette2, NULL)) : 
  invalid graphics state

Cosa c'è che non va qui? Ecco i dati:

 date   trt var val
1/8/2008    cc  sw5 0.2684138
1/8/2008    cc  sw15    0.2897586
1/8/2008    cc  sw5 0.2822414
2/8/2008    cc  sw5 0.2494583
2/8/2008    cc  sw5 0.2692917
2/8/2008    cc  sw15    0.2619167
2/8/2008    cc  sw5 0.204375
3/8/2008    cc  sw5 0.2430625
3/8/2008    cc  sw5 0.2654375
3/8/2008    cc  sw5 0.2509583
3/8/2008    cc  sw5 0.2055625
1/8/2008    ccw sw15    0.2212414
1/8/2008    ccw sw5 0.3613448
1/8/2008    ccw sw5 0.2607586
2/8/2008    ccw sw5 0.2087917
2/8/2008    ccw sw15    0.3390417
2/8/2008    ccw sw5 0.2436458
2/8/2008    ccw sw5 0.290875
3/8/2008    ccw sw5 0.20175
3/8/2008    ccw sw15    0.328875
3/8/2008    ccw sw5 0.2328958
3/8/2008    ccw sw5 0.2868958

Quando lavoro con questi dati, indico date come questa:

df<-df[order(as.Date(df$date,format="%d/%m/%Y")),,drop=FALSE]

e qui voglio fare uno scatterplot:

ggplot(data = df,aes(x = date,y = val)) + 
 geom_point(aes(group = trt))

3
Hai provato a (ri) installare ggplot2?
Paul Hiemstra

L'ho aggiunto come risposta, in questo modo le altre persone possono trovare la risposta più facilmente. Puoi accettare la risposta facendo clic sul segno di spunta accanto alla mia risposta. Giusto per confermare, avevi ggplot2installato originariamente?
Paul Hiemstra

Sì, era già installato.
Nazer

3
il riavvio della sessione R ha risolto il mio problema.
Chris

Cordiali saluti, questo problema può sorgere anche se si tenta di costruire utilizzare dimensioni della figura troppo piccole (ad esempio, tentando di fornire le dimensioni in pollici senza specificare l'unità).
Keith Hughitt

Risposte:


353

Mi sono imbattuto in questo stesso errore e l'ho risolto eseguendo:

dev.off()

e quindi eseguire di nuovo la trama. Penso che il dispositivo grafico sia stato incasinato prima in qualche modo esportando alcuni elementi grafici e non è stato ripristinato. Questo ha funzionato per me ed è più semplice della reinstallazione di ggplot2.


1
Questo risolve il problema, ma hai qualche idea sul motivo per cui lo fa?
Pedro Cavalcante

2
@PedroCavalcanteOliveira ho avuto il problema, dopo che ho usato par(mfrow = c(..., ...))prima. Non conosco altri parametri grafici, ma potrebbero causare questo problema.
loki

1
Ha aiutato, ma cosa fa?
vasili111

9

La soluzione è semplicemente reinstallare ggplot2. Forse c'è un'incompatibilità tra la versione R che stai utilizzando e la versione installata di ggplot2. In alternativa, qualcosa potrebbe essere andato storto durante l'installazione ggplot2precedente, causando il problema che vedi.


4
Grazie per aver tenuto questa risposta qui. Sebbene l'altra risposta sia più semplice, dev.off()non ha funzionato per me ed è una buona seconda opzione per provare a reinstallare ggplot2.
Nazer

Potrebbe essere meglio provare dev.off()prima, richiede meno tempo rispetto alla reinstallazione del pacchetto. Questo può essere un secondo passaggio se dev.off()non ha funzionato.
Jason Goal

6

Ho scoperto che ciò si verifica quando si mescolano grafici ggplot con grafici di trama nella stessa sessione. L'utilizzo della soluzione "dev.off" suggerita da Paul risolve il problema.


Cosa dev.off'fa?
vasili111

4

Probabilmente non è necessario reinstallare ggplot2

Soluzione: torna alla trama che non funzionava in precedenza. Prendi l'output della console di seguito per esempio. I margini della figura (la finestra che visualizza i grafici) erano troppo piccoli per visualizzare il grafico delle coppie (MinusInner). Quindi, quando ho provato a creare il prossimo qplot, R era ancora bloccato per l'errore precedente.

coppie (MinusInner) Errore in plot.new (): margini della figura troppo grandi qplot (Sample.Type, BAE, data = MinusInner, geom = "boxplot") Errore in .Call.graphics (C_palette2, .Call (C_palette2, NULL) ): stato grafico non valido

Ho corretto il primo errore espandendo la finestra del grafico e rieseguendo il grafico delle coppie (MinusInner). Allora blam, ha funzionato.

coppie (MinusInner) qplot (Sample.Type, BAE, data = MinusInner, geom = "boxplot")


0

Ho risolto il problema cancellando tutti i grafici nella console e assicurandomi che l'area della trama fosse abbastanza grande da contenere ciò che stavo creando.


0

prova a ottenere grafici con x11()o win.graph()e risolvi questo problema.

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.