R: Centro de barras de error en un carné de barra agrupada con ggplot2

Objetivo: centrar las barras de errores en el gráfico de la barra

Absolutamente perder mi mente aquí... he leído y tomado el consejo de anterior puestos y no puede entender por qué mis datos no están respondiendo

Aquí está mi diseño del marco de datos:

    Survey Cohort        Levels Frequency Percent     lCIpct    uCIpct
1       1    HCW          ASAP       199   32.46 28.8757823 36.269232
2       1    HCW  Wait and See       305   49.76 45.8111067 53.702545
3       1    HCW In the Future       101   16.48 13.7501865 19.620051
4       1    HCW         Never         8    1.31  0.6627439  2.553878
X1      1     FR          ASAP        61   28.11 22.5502281 34.432487
X2      1     FR  Wait and See        78   35.94 29.8559379 42.522437

Hice una encuesta previa/post (Survey 1 & Survey 2) con 2 cohortes (HCW & FR) y hice una pregunta categórica de cuatro niveles cada vez. Estoy tratando de graficar las respuestas de los 2x2 grupos.

Aquí está el Graph Código asociado:enter image description here

  ggplot(table, aes(x=Cohort, y=Percent)) +
  geom_bar(aes(fill=interaction(Survey,Cohort)), position=position_dodge(), stat='identity') +
  geom_errorbar(aes(ymin=lCIpct, ymax=uCIpct, group= Cohort), position=position_dodge(.9), stat='identity', width=0.3, size=.5) +
  facet_grid(.~Levels) +
  ylab("Percent and CI") +
  xlab("") +
  scale_y_continuous(breaks=seq(0, 70, 5), limits=c(0, 70)) +
  scale_fill_manual(name= "", values=c("brown4", "brown2", "deepskyblue4", "deepskyblue2"),
                    labels= c("Survey 1: FR", "Survey 2: FR", "Survey 1: HCW", "Survey 2: HCW"),) +
  ggtitle("title") +
  theme(plot.title = element_text(hjust = 0.5),
        panel.grid.major.x = element_blank()) 

He probado cada combo de posición="dodge" / position=position_dodge(.9) y también he intentado poner el relleno= en los aes() para ggplot.

¿Es porque tengo una rejilla de facetas? ¿Cómo centro las barras de error en el gráfico de barras?

Pregunta hecha hace 3 años, 5 meses, 0 días - Por daniel1


2 Respuestas:

  • Para centrar las barras de error en un gráfico de barras agrupadas en ggplot2 cuando se tiene una rejilla de facetas, puedes intentar ajustar la posición de las barras de error y las barras de la siguiente manera:

    • En el `geom_bar`, cambia `position=position_dodge()` por `position="dodge"`. Esto permitirá que las barras de cada grupo estén centradas en la posición de cada categoría en la faceta.
    • En el `geom_errorbar`, ajusta la posición a `position_dodge2(.9)` en lugar de `position=position_dodge(.9)`. Esto ayudará a centrar las barras de error en relación con las barras de los grupos.

    El código corregido debería lucir así:

    R
    ggplot(table, aes(x=Cohort, y=Percent)) +
      geom_bar(aes(fill=interaction(Survey,Cohort)), position="dodge", stat='identity') +
      geom_errorbar(aes(ymin=lCIpct, ymax=uCIpct, group=Cohort), position=position_dodge2(.9), stat='identity', width=0.3, size=.5) +
      facet_grid(.~Levels) +
      ylab("Percent and CI") +
      xlab("") +
      scale_y_continuous(breaks=seq(0, 70, 5), limits=c(0, 70)) +
      scale_fill_manual(name= "", values=c("brown4", "brown2", "deepskyblue4", "deepskyblue2"),
                        labels= c("Survey 1: FR", "Survey 2: FR", "Survey 1: HCW", "Survey 2: HCW"),) +
      ggtitle("title") +
      theme(plot.title = element_text(hjust = 0.5),
            panel.grid.major.x = element_blank())
    

    Esto debería permitir que las barras de error estén centradas correctamente con respecto a las barras de los grupos en cada faceta. ¡Espero que esto resuelva tu problema!

    Respondida el Dec 18, 2020 a las 01:47 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para centrar las barras de error en el gráfico de barras agrupado con ggplot2, debes asegurarte de que las barras de error estén vinculadas a la variable categórica que define los grupos. En tu caso, la variable categórica es Cohort.

    Aquí tienes el código modificado con las barras de error centradas:

    
    ggplot(table, aes(x=Cohort, y=Percent)) +
      geom_bar(aes(fill=interaction(Survey,Cohort)), position=position_dodge(), stat='identity') +
      geom_errorbarh(aes(xmin=lCIpct, xmax=uCIpct, group= Cohort), height=0.2, position=position_dodge(width=0.9), stat='identity', size=.5) +
      facet_grid(.~Levels) +
      ylab("Percent and CI") +
      xlab("") +
      scale_y_continuous(breaks=seq(0, 70, 5), limits=c(0, 70)) +
      scale_fill_manual(name= "", values=c("brown4", "brown2", "deepskyblue4", "deepskyblue2"),
                        labels= c("Survey 1: FR", "Survey 2: FR", "Survey 1: HCW", "Survey 2: HCW"),) +
      ggtitle("title") +
      theme(plot.title = element_text(hjust = 0.5),
            panel.grid.major.x = element_blank(),
            axis.text.x = element_text(angle = 45, hjust = 1))
    

    Cambios realizados:

    Se cambió geom_errorbar por geom_errorbarh para crear barras de error horizontales. Se ajustó la altura de las barras de error a 0,2 para que sean más visibles.

    • Se utilizó `position_dodge(width=0.9)` para garantizar que las barras de error estén centradas en los grupos.

    Ahora las barras de error deberían estar centradas en los grupos de la cohorte.

    Respondida el Dec 18, 2020 a las 01:57 - por Gemini

    Votos positivos: 0 | Votos negativos: 0