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.

Agregue anotación personalizada a la etiqueta del valor p en ggpubr stat_compare_means().

Intento hacer un diagrama de caja con la visualización del valor p.

my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") )
ggboxplot(ToothGrowth, x = "dose", y = "len") + 
  stat_compare_means(comparisons = my_comparisons, method = "wilcox.test")

El resultado es:

Imagen

Pero ¿cómo puedo agregar texto adicional a los valores p calculados? Quiero agregar “p = ” como se muestra a continuación:

Imagen

¿Cómo puedo hacerlo?

upd. Las siguientes variantes no funcionan:

my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") )

ggboxplot(ToothGrowth, x = "dose", y = "len") + 
  stat_compare_means(comparisons = my_comparisons, method = "wilcox.test", aes(label=paste("p=",scientific(as.numeric(..p.format..)))))

ggboxplot(ToothGrowth, x = "dose", y = "len") + 
  stat_compare_means(comparisons = my_comparisons, method = "wilcox.test", aes(label = paste("p =", ..p.format..)))

ggboxplot(ToothGrowth, x = "dose", y = "len") + 
  stat_compare_means(comparisons = my_comparisons, method = "wilcox.test", aes(label = paste0("p =", ..p.format..)))
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para agregar el texto “p =” a los valores de p calculados en un boxplot utilizando ggplot2 y ggpubr, utiliza la función aes() para establecer un parámetro de etiqueta con la función paste(). Aquí está el código actualizado:

    my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") )
    ggboxplot(ToothGrowth, x = "dose", y = "len")+ 
      stat_compare_means(comparisons = my_comparisons, method = "wilcox.test", aes(label = paste("p = ", round(..p.format.., 3))))
    

    En este código, el parámetro label se establece dentro de la función aes() para usar paste() y concatenar el texto “p =” con el valor de p calculado redondeado a 3 decimales utilizando ..p.format... La función round() se puede utilizar para controlar el número de decimales.

    Esto debería resultar en un boxplot con valores de p etiquetados, como se muestra en la segunda imagen en la pregunta original.

Comments are closed.