显著性标记箱线散点图

本篇笔记的内容是在R语言中利用ggplot2,ggsignif,ggsci,ggpubr等包制作箱线散点图,并计算指定变量之间的显著性水平,对不同分组进行特异性标记,最终效果如下。

R语言实现 均值的置信区间 r语言置信区间散点图_bc

加载R包

library(ggplot2)
library(ggsignif)
library(ggsci)
library(ggpubr)

载入示例数据

本次使用R语言自带的数据集mpg进行演示,内含不同汽车的相关数据指标。

df <- mpg
head(mpg)

R语言实现 均值的置信区间 r语言置信区间散点图_竖线_02

进行绘图

ggplot(df,aes(class,hwy))+
  geom_boxplot(aes(fill=class))

R语言实现 均值的置信区间 r语言置信区间散点图_竖线_03

首先绘制出一张普通的箱线图,填充颜色与车型分类class变量有关,然后在其基础上添加图层。下面检测compact\~pickupsubcompact\~suv的相关性,采用t测验,标注信息与横线距离0.1,两端竖线距离0.05

ggplot(df,aes(class,hwy))+
  geom_boxplot(aes(fill=class))+
  geom_signif(
    comparisons = list(
    c("compact","pickup"),
    c("subcompact","suv")
    ), #检测两者之间的差异显著性
    map_signif_level = T, #添加星号标记
    test = "t.test", #检测方法
    vjust=0.1, #标注和横线的距离
    tip_length = 0.05 #两端短竖线的长度
  )

R语言实现 均值的置信区间 r语言置信区间散点图_数据_04

现在可以从图中看出显著性检验的结果,如果想显示p值,只需要将map_signif_level改为F即可,接下来对图片添加注释信息。

ggplot(df,aes(class,hwy))+
  geom_boxplot(aes(fill=class))+
  geom_signif(
    comparisons = list(
    c("compact","pickup"),
    c("subcompact","suv")
    ), #检测两者之间的差异显著性
    map_signif_level = T, #添加星号标记
    test = "t.test", #检测方法
    vjust=0.1, #标注和横线的距离
    tip_length = 0.05 #两端短竖线的长度
  )+
  geom_signif(
    annotations = c("one","two"), #添加注释
    y_position = c(40,42),xmin = c(2,1),xmax = c(5,3) #添加的位置
  )

R语言实现 均值的置信区间 r语言置信区间散点图_bc_05

添加位置信息使用annotations参数,设置信息后利用位置参数进行标注。添加散点图的图层,设置点的颜色和位置,更改箱线图的透明度为70%,最后,再对结果进行主题修改和美化,最终呈现如下效果:

ggplot(df,aes(class,hwy))+
  geom_point(aes(color = class),position = "jitter")+
  geom_boxplot(aes(fill=class),alpha=0.7)+
  geom_signif(
    comparisons = list(
    c("compact","pickup"),
    c("subcompact","suv")
    ), #检测两者之间的差异显著性
    map_signif_level = T, #添加星号标记
    test = "t.test", #检测方法
    vjust=0.1, #标注和横线的距离
    tip_length = 0.05 #两端短竖线的长度
  )+
  geom_signif(
    annotations = c("one","two"), #添加注释
    y_position = c(40,42),xmin = c(2,2),xmax = c(5,3) #添加的位置
  )+
  scale_y_continuous(limits = c(10,48))+
  theme_bw()+
  theme(
    legend.position = "none",
    axis.title = element_text(size = 15,face = "bold"),
    axis.text.x = element_text(size = 12,hjust = 1,angle = 45,color = "black"),
    axis.title.y = element_text(size = 12,color = "black"))

R语言实现 均值的置信区间 r语言置信区间散点图_后端_06

各组显著性比较

载入数据

仍然使用mpg数据集,不过需要注意的是,将class变量变为因子型,因为这样可以在对比过程中按照一定的顺序依次进行。compare_means函数能够对不同变量进行假设检验,com_list变量储存了比较的不同分组,利用for循环生成两两配对的比对列表。

df <- mpg
df$class <- as.factor(df$class)
levels(df$class)
compare <- compare_means(hwy~class,df,method = "t.test")
com_list <- list()
for (i in 1:nrow(compare)){
  com_list[[i]] <- c(compare$group1[i],compare$group2[i])
}

开始绘图

该步骤使用ggplot绘图,方法和之前的一样,不过这里显示了每个变量之间的两两比较结果。

ggplot(df,aes(class,hwy))+
  geom_boxplot(aes(fill=class))+
  stat_compare_means(comparisons = com_list,
                     test = "t.test",
                     step.increase = 0.1,
                     map_signif_level = T)+
  theme_bw()+
  scale_fill_jco()

R语言实现 均值的置信区间 r语言置信区间散点图_后端_07