Anhaltender ungültiger Grafikstatusfehler bei Verwendung von ggplot2

119

Ich glaube, mein Datenrahmen ist in Ordnung und mein Code ist in Ordnung. Tatsächlich habe ich Teile des Datenrahmens und den größten Teil des Grafikcodes entfernt, um die Dinge so einfach wie möglich zu gestalten. Trotzdem bekomme ich:

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

Was ist hier falsch? Hier sind die Daten:

 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

Wenn ich mit diesen Daten arbeite, gebe ich Daten wie folgt an:

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

und hier möchte ich ein Streudiagramm machen:

ggplot(data = df,aes(x = date,y = val)) + 
 geom_point(aes(group = trt))
Nazer
quelle
3
Haben Sie versucht, ggplot2 (neu) zu installieren?
Paul Hiemstra
Ich habe dies als Antwort hinzugefügt, damit andere Leute die Antwort leichter finden können. Sie können die Antwort akzeptieren, indem Sie auf das Häkchen direkt neben meiner Antwort klicken. Nur um zu bestätigen, hatten Sie ggplot2ursprünglich installiert?
Paul Hiemstra
Ja, es wurde bereits installiert.
Nazer
3
Ein Neustart der R-Sitzung löste mein Problem.
Chris
Zu Ihrer Information - Dieses Problem kann auch auftreten, wenn Sie versuchen, zu kleine Abmessungen zu verwenden (z. B. den Versuch, Abmessungen in Zoll anzugeben, ohne die Einheit anzugeben).
Keith Hughitt

Antworten:

353

Ich bin auf denselben Fehler gestoßen und habe ihn durch Ausführen von:

dev.off()

und dann die Handlung erneut ausführen. Ich denke, das Grafikgerät wurde früher durch den Export einiger Grafiken durcheinander gebracht und es wurde nicht zurückgesetzt. Dies hat bei mir funktioniert und ist einfacher als die Neuinstallation von ggplot2.

paul
quelle
1
Dies löst das Problem, aber haben Sie eine Idee, warum dies der Fall ist?
Pedro Cavalcante
2
@PedroCavalcanteOliveira Ich hatte das Problem, nachdem ich par(mfrow = c(..., ...))vorher verwendet habe. Sie kennen keine anderen Grafikparameter, können diese jedoch verursachen.
Loki
1
Es hat geholfen, aber was macht das?
Vasili111
9

Die Lösung besteht darin, einfach neu zu installieren ggplot2. Möglicherweise besteht eine Inkompatibilität zwischen der von Ihnen verwendeten R-Version und Ihrer installierten Version von ggplot2. Alternativ ist möglicherweise bei der ggplot2früheren Installation ein Fehler aufgetreten, der das angezeigte Problem verursacht hat.

Paul Hiemstra
quelle
4
Vielen Dank, dass Sie diese Antwort hier behalten. Obwohl die andere Antwort einfacher ist, dev.off()hat sie bei mir nicht funktioniert und es ist eine gute zweite Option, um zu versuchen, ggplot2 neu zu installieren.
Nazer
Es ist möglicherweise besser, es dev.off()zuerst zu versuchen , es dauert weniger als die Neuinstallation des Pakets. Dies kann ein zweiter Schritt sein, wenn er dev.off()nicht funktioniert hat.
Jason Goal
6

Ich habe festgestellt, dass dies auftritt, wenn Sie ggplot-Diagramme mit Plot-Diagrammen in derselben Sitzung mischen. Die Verwendung der von Paul vorgeschlagenen 'dev.off'-Lösung löst das Problem.

Ernie
quelle
Was dev.off'macht?
Vasili111
4

Sie müssen ggplot2 wahrscheinlich nicht neu installieren

Lösung: Gehen Sie zurück zum Plot, der zuvor nicht funktioniert hat. Nehmen Sie zum Beispiel die folgende Konsolenausgabe. Die Bildränder (das Fenster, in dem Ihre Diagramme angezeigt werden) waren zu klein, um das Paardiagramm (MinusInner) anzuzeigen. Als ich dann versuchte, den nächsten qplot zu erstellen, wurde R immer noch wegen des vorherigen Fehlers aufgelegt.

Paare (MinusInner) Fehler in plot.new (): Bildränder zu groß qplot (Sample.Type, BAE, data = MinusInner, geom = "boxplot") Fehler in .Call.graphics (C_palette2, .Call (C_palette2, NULL) ): ungültiger Grafikstatus

Ich habe den ersten Fehler behoben, indem ich das Plotfenster erweitert und das Paardiagramm (MinusInner) erneut ausgeführt habe. Dann schuld, es hat funktioniert.

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

DjBabyKangaroo
quelle
0

Ich habe dieses Problem gelöst, indem ich alle Diagramme in der Konsole gelöscht und dann sichergestellt habe, dass der Diagrammbereich groß genug ist, um das aufzunehmen, was ich erstellt habe.

Gänseblümchen
quelle
0

Versuchen Sie, Grafik mit x11()oder herauszuholen win.graph()und dieses Problem zu lösen.

MauroMardones
quelle