用ggplot2可视化统计测试结果

时间:2015-04-14 00:27:34

标签: r ggplot2 visualization data-visualization

我想将我的统计测试结果整合到我的情节中。带有虚拟变量的脚本示例(首次发布后生成的虚拟数据):

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结果自动整合到我的绘图中(当然我可以使用注释()并手动编写结果但是&#39 ;不是我之后的事。

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

我是R的新手并尝试通过使用ggplot2和dplyr学习东西,我认为这是最直观的操作和可视化软件包。不知道它们是否适合我之后的解决方案,所以我们可以随意提出替代包装的解决方案......

1 个答案:

答案 0 :(得分:0)

我认为这个数字显示了你想要的东西。我还在代码中添加了一些部分,因为您是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)

enter image description here

如果您想将p值包含在自己的图例中,它看起来像是some work, but doable

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