代码之家  ›  专栏  ›  技术社区  ›  mercury

使用ggpubr在箱线图上添加平均值

  •  1
  • mercury  · 技术社区  · 7 年前

    我正在尝试使用ggpubr包在箱线图上添加标签。以下是我使用的代码:

    library(ggplot2)
    library(ggpubr)
    compare_means(len ~ supp, data = ToothGrowth, method="t.test", paired=TRUE, group.by = "dose")
    # Box plot facetted by "dose"
    p1 <- ggboxplot(ToothGrowth, x = "supp", y = "len", xlab=F,
          color = "supp", palette = "jco",
          facet.by = "dose", add="mean", short.panel.labs = FALSE)
    # Use only p as label.
    p2 <- p1 + stat_compare_means(method = "t.test", paired = T,  label = "p")
    p2
    

    和样本数据(牙齿生长)

    15.5   VC  1.0
    23.6   VC  2.0
    18.5   VC  2.0
    33.9   VC  2.0
    25.5   VC  2.0
    26.4   VC  2.0
    32.5   VC  2.0
    26.7   VC  2.0
    21.5   VC  2.0
    23.3   VC  2.0
    29.5   VC  2.0
    15.2   OJ  0.5
    21.5   OJ  0.5
    17.6   OJ  0.5
     9.7   OJ  0.5
    14.5   OJ  0.5
    10.0   OJ  0.5
     8.2   OJ  0.5
     9.4   OJ  0.5
    16.5   OJ  0.5
     9.7   OJ  0.5
    

    是否有任何方法可以将平均值添加为文本(而不是使用:add=“mean”的点)

    如果可能的话,我想把平均值文本放在“p=0.000”下面,它来自“stat\u compare\u means”代码。

    此外,是否有方法删除在对绘图进行分组时自动生成的图例?

    我要绘制的最后一个图如下所示:

    https://i.stack.imgur.com/qudMy.png

    1. 将平均值作为文本添加到箱线图上
    2. 删除顶部的图例

    提前感谢!

    1 回复  |  直到 7 年前
        1
  •  2
  •   Roman    7 年前

    你可以试试

    p1 + stat_compare_means(method = "t.test", paired = T,  label = "p", label.x = 0.8)+ 
         stat_summary(fun.data = function(x) data.frame(y=32, label = paste("Mean=",mean(x))), geom="text") +
         theme(legend.position="none")
    

    enter image description here