tutorial - varias graficas en r
Gráfico de dispersión categórico con segmentos medios usando ggplot2 en R (2)
Intento trazar un diagrama de dispersión simple para 3 grupos, superponiendo un segmento que indica la media para cada grupo y etiquetando los grupos. Logré obtener un diagrama de dispersión con barras de error, pero solo me gustaría un segmento que indique dónde está la media. También parece que no puedo obtener el etiquetado correcto del grupo.
Para obtener las estadísticas de resumen, estoy usando la función "summarySE" de esta página .
¿Hay alguna manera más simple de hacer esto y obtener un segmento en lugar de un punto para el promedio?
¡Realmente aprecio tu ayuda!
library(ggplot2)
library(plyr)
df <- data.frame(tt = rep(1:3, each = 40),
val = round(rnorm(120, m = rep(c(4, 5, 7), each = 40))))
# After loading the summarySE function:
dfc <- summarySE(df, measurevar="val", groupvars="tt")
ggplot(dfc, aes(tt, val), main="Scatter plot with mean bars",
xlab="Groups", ylab="Values", names=c("Group1", "Group2", "Group3"))+
geom_jitter(aes(tt, val), data = df, colour = I("red"),
position = position_jitter(width = 0.05)) +
geom_point(size = 3) +
geom_errorbar(aes(ymin=val-sd, ymax=val+sd), width = 0.01, size = 1)
Para obtener el etiquetado del grupo, puede cambiar continuamente tt un factor como este:
dfc$tt <- factor(dfc$tt,labels=c("Group1", "Group2", "Group3"))
Por supuesto, antes de llamar a summarySE
y crear dfc
.
y utilizando la crossbar
como se menciona en la otra solución a continuación, obtienes:
Puede usar geom_crossbar()
y usar val
como val
y
, ymin
e ymax
. Con scale_x_continuous()
puede cambiar las etiquetas de eje x para los datos originales o usar la solución @ agstudy para cambiar los datos originales y las etiquetas aparecerán automáticamente.
ggplot()+
geom_jitter(aes(tt, val), data = df, colour = I("red"),
position = position_jitter(width = 0.05)) +
geom_crossbar(data=dfc,aes(x=tt,ymin=val, ymax=val,y=val,group=tt), width = 0.5)+
scale_x_continuous(breaks=c(1,2,3),labels=c("Group1", "Group2", "Group3"))