¿Cómo puedo 'esquivar' la posición de geom_point en ggplot2?

19

Estoy usando ggplot2 en R para hacer tramas como las siguientes:

ingrese la descripción de la imagen aquí

Las barras de error se superponen entre sí, lo que parece realmente desordenado. ¿Cómo puedo separar las barras de error para diferentes índices? He usado position = "dodge" pero parece que no funciona. Aquí está la parte principal de mi código:

plot =  ggplot(data,aes(x=ntrunc,y=beta_best,group=ntrunc,colour=INDEX))
       +geom_point(aes(shape=detectable),na.rm=TRUE,position="dodge") 
        +geom_errorbar(aes(x=ntrunc,ymax=beta_high,ymin=beta_low),na.rm=TRUE,position="dodge")
ycc
fuente
1
¿Has probado diferentes valores de "esquivar"? Por ejemplo algo así: position = position_dodge(width = 0.90). Ver también esta publicación .
COOLSerdash
Gracias por tu ejemplo. Sin embargo, acabo de probar diferentes valores de ancho y todavía no funciona.
ycc
2
Es difícil encontrar soluciones sin el conjunto de datos original. Pero tengo una pregunta: ¿Por qué son iguales los valores de y los "grupos"? ¿Qué es ? No debe ser ? xntruncgroupINDEX
COOLSerdash
Funciona ahora después de cambiar group = "INDEX". Creo que he entendido mal el significado de "grupo". Gracias @COOLSerdash
ycc

Respuestas:

12

El grupo debería = INDEX en lugar de ntrunc en los aes.

plot =  ggplot(data, aes(x=ntrunc, y=beta_best, group=INDEX, colour=INDEX)) +
   geom_point(aes(shape=detectable), na.rm=TRUE, position="dodge") +
   geom_errorbar(aes(x=ntrunc, ymax=beta_high, ymin=beta_low), na.rm=TRUE, position="dodge")

La trama se ve mejor ahora.

ingrese la descripción de la imagen aquí

ycc
fuente
77
Esto no funcionó para mí hasta que uségeom_point(aes(shape=detectable),na.rm=TRUE, position=position_dodge(width=0.3))
Nova
Sería genial obtener un ejemplo de datos aquí porque no puedo reproducir su resultado.
Léo Léopold Hertz 준영
1
@Nova mi suposición es que la respuesta se rompió cuando ggplot2pasó de la versión 0.9.Xde 1.Xo2.X
Richard Erickson