es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo agregar la línea de media a un gráfico de densidad agrupado en R?

Estoy tratando de dibujar un gráfico de densidad agrupado y agregar la línea media de cada gráfico; aquí está el código


data <- data.frame( Accuracy=abs(rnorm(140)), Species=c(rep("A.All",20),rep("B. double",60),rep("C.single",60), rep("D.All",20),rep("E.double",60),rep("F.single",60)), Modality=c(rep("All,w0",10),rep("double1,w0",10),rep("double2,w0",10),rep("double3,w0",10), rep("single1,w0",10),rep("single2,w0",10),rep("single3,w0",10), rep("All,w2",10),rep("double1,w2",10),rep("double2,w2",10),rep("double3,w2",10), rep("single1,w2",10),rep("single2,w2",10),rep("single3,w2",10)) ) p<-ggplot(data, aes(x=Accuracy, fill=Modality)) + geom_density(alpha=0.4)+ facet_wrap(. ~ Species) + xlab("Accuracy") + ylab("Density") library(plyr) mu <- ddply(data, "Modality", summarise, grp.mean=mean(Accuracy)) head(mu) <h1>Agregar líneas medias</h1> a<-p+geom_vline(data=mu, aes(xintercept=grp.mean, color=Modality), linetype="dashed")+ xlab("Accuracy") + ylab("Density")

Sin embargo, según la figura de salida en
aquí, las líneas medias son absolutamente incorrectas. Por ejemplo, para la primera imagen en la parte superior izquierda, debería haber dos líneas para dos gráficos de densidad, pero se crean un par de líneas y se repiten para todas las figuras.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para solucionar el problema de las líneas medias incorrectas en el gráfico de densidad agrupada, debemos modificar el código. En lugar de utilizar ddply() del paquete plyr, podemos usar el paquete dplyr para agrupar los datos por Species y Modality y calcular la media de Accuracy. Luego, podemos unir estos datos resumidos con los datos originales utilizando la función left_join() del paquete dplyr. Finalmente, podemos utilizar la función geom_segment() en ggplot2 para crear líneas medias separadas para cada grupo.

    Aquí está el código modificado:

    “`{r}
    library(dplyr)
    library(ggplot2)

    data <- data.frame(
    Accuracy = abs(rnorm(140)),
    Species = c(rep(“A.All”,20),rep(“B. double”,60),rep(“C.single”,60),
    rep(“D.All”,20),rep(“E.double”,60),rep(“F.single”,60)),

    Modality = c(rep(“All,w0”,10),rep(“double1,w0”,10),rep(“double2,w0”,10),rep(“double3,w0”,10),
    rep(“single1,w0”,10),rep(“single2,w0”,10),rep(“single3,w0”,10),
    rep(“All,w2”,10),rep(“double1,w2”,10),rep(“double2,w2”,10),rep(“double3,w2”,10),
    rep(“single1,w2”,10),rep(“single2,w2”,10),rep(“single3,w2”,10))
    )

    Calcular medias de grupo

    mu <- data %>%
    group_by(Species, Modality) %>%
    summarise(grp.mean = mean(Accuracy))

    Unir datos resumidos con datos originales

    data <- data %>%
    left_join(mu, by = c(“Species”, “Modality”))

    Graficar gráfico de densidad agrupada con líneas medias

    p <- ggplot(data, aes(x = Accuracy, fill = Modality)) +
    geom_density(alpha = 0.4) +
    facet_wrap(. ~ Species) +
    xlab(“Accuracy”) + ylab(“Density”)

    a <- p +
    geom_segment(data = mu, aes(x = grp.mean, xend = grp.mean, y = 0, yend = 1,
    color = Modality), linetype = “dashed”) +
    xlab(“Accuracy”) + ylab(“Density”)

    a # mostrar el gráfico
    “`

    Este código debería generar el gráfico de densidad agrupada correcto con líneas medias separadas para cada grupo.

Comments are closed.