符号而不是ggplot上的p值数字

问题描述 投票:1回答:2

我创建了以下数据和图表。如何用符号替换p值?

  • 如果p值大于0.05-不显示,
  • 如果p值在0.01到0.05之间,则显示*
  • 如果p值小于0.01,则显示**

有包装吗?任何人都可以提供示例吗?

[我发现我可以在stat_compare_means中添加“ label =” p.signif“,但它显示” ns“而不是不显示它。

df <- data.frame("Class" = c("A","A","A","A","A","A","A","A","A",
                             "B","B","B","B","B","B","B","B","B",
                             "C","C","C","C","C","C","C","C","C"), 
                   "Subject" = c("Math","Math","Math","Reading","Reading","Reading","Writing","Writing","Writing",
                                 "Math","Math","Math","Reading","Reading","Reading","Writing","Writing","Writing",
                                 "Math","Math","Math","Reading","Reading","Reading","Writing","Writing","Writing"),
                   "Score" = c(round(runif(27,0,100))))

library("ggplot2")

comp <- list (c("A","B"), c("A", "C"),  c("B", "C"))

ggplot(data = df, aes(x = Class, y = Score, color = Subject)) + 
  facet_wrap(~Subject) +
  geom_violin(trim = FALSE) +
  stat_compare_means(aes(group = Subject), method = "t.test", comparisons = comp)

“绘图”

r ggplot2 p-value ggpubr
2个回答
0
投票

我们可以在symnum.args中使用stat_compare_means,并根据需要分配cutpointssymbols

library(ggplot2)
library(ggpubr)

ggplot(data = df, aes(x = Class, y = Score, color = Subject)) + 
   facet_wrap(~Subject) +
   geom_violin(trim = FALSE) +
  stat_compare_means(aes(group = Subject), method = "t.test", comparisons = comp, 
                 symnum.args = list(cutpoints = c(0, 0.01, 0.05, Inf), 
                                    symbols = c("**", "*", "")))

enter image description here


0
投票

显然,您正在使用functions程序包的ggpubr。添加label = "p.signif", hide.ns = TRUE将执行:

ggplot(data = df, aes(x = Class, y = Score, color = Subject)) + 
  facet_wrap(~Subject) +
  geom_violin(trim = FALSE) +
  stat_compare_means(aes(group = Subject), method = "t.test", 
                     label = "p.signif", hide.ns = TRUE, 
                     comparisons = comp)

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.