使用 ggplot2 可视化统计测试结果

visualizing statistical test results with ggplot2

我想将我的统计测试结果整合到我的绘图中。我的带有虚拟变量的脚本示例(下面的虚拟数据在第一个 post 之后生成):

cases <- rep(1:1:5,times=10)
var1 <- rep(11:15,times=10)
outcome <- rep(c(1,1,1,2,2),times=10)

maindata <- data.frame(cases,var1,outcome)

df1 <- maindata %>%
  group_by(cases) %>%
  select(cases,var1,outcome) %>%
  summarise(var1 = max(var1, na.rm = TRUE), outcome=mean(outcome, na.rm =TRUE))

wilcox.test(df1$var1[df1$outcome<=1], df1$var1[df1$outcome>1])

ggplot(df1, aes(x = as.factor(outcome), y = as.numeric(var1), fill=outcome)) + geom_boxplot()

有了这些,一切正常,但我无法找到一种方法将我的 wilcox.test 结果自动集成到我的绘图中(当然我可以使用 annotation() 并手动编写结果,但那是不是我想要的。

我的脚本生成两个箱线图,y 轴上的最大值为 var1,x 轴上按结果分组(只有两个不同的结果值)。我想将我的 wilcox.test 结果添加到该箱线图中,所有其他相关数据都存在。试图从论坛和帮助文件中找到方法,但找不到方法(至少在 ggplot2 中)

我是 R 的新手,正在尝试通过使用 ggplot2 和 dplyr 来学习东西,我认为它们是用于操作和可视化的最直观的包。不知道它们是否是我所追求的解决方案的最佳选择,所以请随时从替代包中提出解决方案...

我认为这个数字显示了你想要的。我还在代码中添加了一些部分,因为您是 ggplot2 的新手。接受或离开它们,但我确实做了一些事情来制作出版质量数字:

wtOut = wilcox.test(df1$var1[df1$outcome<=1], df1$var1[df1$outcome>1])
exampleOut <- ggplot(df1, 
     aes(x = as.factor(outcome), y = as.numeric(var1), fill=outcome)) + 
     geom_boxplot() + 
     scale_fill_gradient(name = paste0("P-value: ", 
                                       signif(wtOut$p.value, 3), "\nOutcome")) +
     ylab("Variable 1") + xlab("Outcome") + theme_bw()

ggsave('exampleOut.jpg', exampleOut, width = 6, height = 4)

如果要将 p 值作为自己的图例包含在内,看起来是 some work, but doable

或者,如果您愿意,只需将 signif(wtOut$p.value, 3) 放入 annotate(...)。你只需要想出放置它的规则。