Error persistente de estado de gráficos no válidos al usar ggplot2

119

Creo que mi marco de datos está bien y mi código está bien. De hecho, he eliminado partes del marco de datos y la mayor parte del código gráfico para hacer las cosas lo más básicas posible. Pero aún así, obtengo:

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

¿Que esta mal aquí? Aquí están los datos:

 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

Cuando trabajo con estos datos, especifico fechas como esta:

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

y aquí quiero hacer un diagrama de dispersión:

ggplot(data = df,aes(x = date,y = val)) + 
 geom_point(aes(group = trt))
Nazer
fuente
3
¿Ha intentado (re) instalar ggplot2?
Paul Hiemstra
Agregué esto como respuesta, de esa manera otras personas pueden encontrar la respuesta más fácilmente. Puede aceptar la respuesta haciendo clic en la marca de verificación junto a mi respuesta. Solo para confirmar, ¿lo habías ggplot2instalado originalmente?
Paul Hiemstra
Sí, ya estaba instalado.
Nazer
3
reiniciar la sesión de R resolvió mi problema.
Chris
Para su información, este problema también puede surgir si intenta construir una figura de uso con dimensiones que son demasiado pequeñas (por ejemplo, al intentar proporcionar dimensiones en pulgadas sin especificar la unidad).
Keith Hughitt

Respuestas:

353

Me encontré con este mismo error y lo resolví ejecutando:

dev.off()

y luego ejecutar la trama nuevamente. Creo que el dispositivo de gráficos se estropeó antes de alguna manera al exportar algunos gráficos y no se reinició. Esto funcionó para mí y es más simple que reinstalar ggplot2.

Pablo
fuente
1
Esto resuelve el problema, pero ¿tiene alguna idea de por qué lo hace?
Pedro Cavalcante
2
@PedroCavalcanteOliveira Tuve el problema, después de usar par(mfrow = c(..., ...))antes. No conozco otros parámetros gráficos, pero pueden causar este problema.
loki
1
Ayudó, pero ¿qué hace?
vasili111
9

La solución es simplemente reinstalar ggplot2. Tal vez haya una incompatibilidad entre la versión R que está usando y su versión instalada de ggplot2. Alternativamente, es posible que algo haya salido mal durante la instalación ggplot2anterior, causando el problema que ve.

Paul Hiemstra
fuente
4
Gracias por mantener esta respuesta aquí. Aunque la otra respuesta es más simple, dev.off()no funcionó para mí y es una buena segunda opción para intentar reinstalar ggplot2.
Nazer
Puede que sea mejor intentarlo dev.off()primero, lleva menos tiempo que reinstalar el paquete. Este puede ser un segundo paso si dev.off()no funcionó.
Jason Goal
6

Encontré que esto ocurre cuando mezclas gráficos ggplot con gráficos de gráficos en la misma sesión. El uso de la solución 'dev.off' sugerida por Paul resuelve el problema.

Ernie
fuente
¿Qué dev.off'hace?
vasili111
4

Probablemente no necesite reinstalar ggplot2

Solución: vuelva a la trama que no funcionó anteriormente. Tome la salida de la consola a continuación, por ejemplo. Los márgenes de la figura (la ventana que muestra sus gráficos) eran demasiado pequeños para mostrar el gráfico de pares (MinusInner). Luego, cuando intenté hacer el siguiente qplot, R todavía estaba colgado por el error anterior.

pares (MinusInner) Error en plot.new (): márgenes de figura demasiado grandes qplot (Sample.Type, BAE, data = MinusInner, geom = "boxplot") Error en .Call.graphics (C_palette2, .Call (C_palette2, NULL) ): estado de gráficos no válido

Arreglé el primer error expandiendo la ventana del gráfico y volviendo a ejecutar el gráfico de pares (MinusInner). Entonces blam, funcionó.

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

DjBabyCanguro
fuente
0

Resolví esto borrando todos los gráficos en la consola y luego asegurándome de que el área del gráfico fuera lo suficientemente grande para acomodar lo que estaba creando.

Margarita
fuente
0

Intente sacar gráficos con x11()o win.graph()y resolver este problema.

MauroMardones
fuente