Erreur d'état des graphiques non valide persistante lors de l'utilisation de ggplot2


119

Je pense que mon dataframe est correct et mon code est correct. En fait, j'ai éliminé des parties du dataframe et la plupart du code graphique pour rendre les choses aussi basiques que possible. Mais quand même, je reçois:

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

Quel est le problème ici? Voici les données:

 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

Lorsque je travaille avec ces données, je spécifie des dates comme ceci:

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

et ici je veux faire un nuage de points:

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

3
Avez-vous essayé (ré) installer ggplot2?
Paul Hiemstra

J'ai ajouté ceci comme réponse, de cette façon, d'autres personnes peuvent trouver la réponse plus facilement. Vous pouvez accepter la réponse en cliquant sur la coche juste à côté de ma réponse. Juste pour confirmer, vous aviez ggplot2installé à l'origine?
Paul Hiemstra

Oui, il était déjà installé.
Nazer

3
le redémarrage de la session R a résolu mon problème.
Chris

FYI - ce problème peut également survenir si vous essayez de construire des dimensions de figure d'utilisation qui sont trop petites (par exemple en essayant de fournir des dimensions en pouces sans spécifier l'unité).
Keith Hughitt

Réponses:


353

J'ai rencontré cette même erreur et je l'ai résolue en exécutant:

dev.off()

puis réexécutez l'intrigue. Je pense que le périphérique graphique a été gâché plus tôt en exportant des graphiques et il n'a pas été réinitialisé. Cela a fonctionné pour moi et c'est plus simple que de réinstaller ggplot2.


1
Cela résout le problème, mais avez-vous une idée de pourquoi?
Pedro Cavalcante le

2
@PedroCavalcanteOliveira J'ai eu le problème, après l'avoir utilisé par(mfrow = c(..., ...))auparavant. Je ne connais pas les autres paramètres graphiques, mais ils pourraient causer ce problème.
loki

1
Cela a aidé mais qu'est-ce que c'est?
vasili111

9

La solution consiste simplement à réinstaller ggplot2. Il y a peut-être une incompatibilité entre la version R que vous utilisez et votre version installée de ggplot2. Sinon, quelque chose s'est peut-être mal passé lors de l'installation ggplot2précédente, provoquant le problème que vous voyez.


4
Merci d'avoir gardé cette réponse ici. Bien que l'autre réponse soit plus simple, cela dev.off()n'a pas fonctionné pour moi et c'est une bonne deuxième option pour essayer de réinstaller ggplot2.
Nazer

Il peut être préférable d'essayer d' dev.off()abord, cela prend moins de temps que de réinstaller le package. Cela peut être une deuxième étape si cela dev.off()n'a pas fonctionné.
Objectif de Jason

6

J'ai constaté que cela se produisait lorsque vous mélangez des graphiques ggplot avec des graphiques de tracé dans la même session. L'utilisation de la solution 'dev.off' suggérée par Paul résout le problème.


Que dev.off'fait?
vasili111

4

Vous n'avez probablement pas besoin de réinstaller ggplot2

Solution: revenez à l'intrigue qui ne fonctionnait pas auparavant. Prenons l'exemple de la sortie de la console ci-dessous. Les marges de la figure (la fenêtre qui affiche vos tracés) étaient trop petites pour afficher le tracé des paires (MinusInner). Ensuite, quand j'ai essayé de faire le qplot suivant, R était toujours raccroché sur l'erreur précédente.

paires (MinusInner) Erreur dans plot.new (): marges de la figure trop grandes qplot (Sample.Type, BAE, data = MinusInner, geom = "boxplot") Erreur dans .Call.graphics (C_palette2, .Call (C_palette2, NULL) ): état graphique non valide

J'ai corrigé la première erreur en développant la fenêtre de tracé et en réexécutant le tracé des paires (MinusInner). Alors blâmez, ça a marché.

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


0

J'ai résolu ce problème en effaçant toutes les parcelles de la console, puis en m'assurant que la zone de la parcelle était suffisamment grande pour accueillir ce que je créais.


0

essayez de sortir des grafics avec x11()ou win.graph()et résolvez ce problème.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.