在ggplot2 / ggpubr中显示成对的箱线图之间的Spearman相关性

时间:2018-08-12 16:11:28

标签: r ggplot2 boxplot ggpubr

我有一个包含三个箱形图的图,我需要使用ggplot2或ggpubr显示成对的箱形图之间的Spearman相关性。

使用成对的p值可以轻松绘制相似的图。例如,

library(ggpubr)
data("ToothGrowth")
df <- ToothGrowth
p <- ggboxplot(df, x = "dose", y = "len",
               color = "dose", palette =c("#00AFBB", "#E7B800", "#FC4E07"),
               add = "jitter", shape = "dose")
my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") )
p + stat_compare_means(comparisons = my_comparisons)

enter image description here

如何使用Spearman相关性而不是p值绘制相似的图?

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

dose_0.5 <- df[df$dose == 0.5,]
dose_1 <- df[df$dose == 1,]
dose_2 <- df[df$dose == 2,]

cor.test(dose_1$len,dose_2$len)
cor.test(dose_0.5$len,dose_2$len)
cor.test(dose_1$len,dose_0.5$len) 

p <- ggboxplot(df, x = "dose", y = "len",
               color = "dose", palette =c("#00AFBB", "#E7B800", "#FC4E07"),
               add = "jitter", shape = "dose")
my_comparisons <- list( c("0.5", "1"), c("1", "2"), c("0.5", "2") )
p + geom_signif(test = "wilcox.test", 
                comparisons = list( c("0.5", "1"), c("1", "2"), c("0.5", "2") ),
                vjust = 0,
                textsize = 4,
                size = .5,
                step_increase = .08,
                annotations = c(cor.test(dose_1$len,dose_0.5$len)$estimate,
                                cor.test(dose_1$len,dose_2$len)$estimate,
                                cor.test(dose_0.5$len,dose_2$len)$estimate))

enter image description here

dfToothGrowth数据集。如果您确实想要这样的东西,只需将p.value替换为相关人员,也许您需要编辑图例或标题以解释注释是否为相关系数。

通过在round()中添加annotation = ...的方式,相关系数不会那么长。