其他
R可视化——箱线图绘制及显著性标记
“ 在大家阅读文献的过程中,有时候会碰到下图所示的这种带有显著性标记的柱状图或者箱线图,这种图是怎么做出来的呢?今天,小编就使用R语言教大家如何绘制这样一张带有显著性标记的箱线图!”
01 准备数据
这里我们使用自己编写的数据,大家也可以导入自己准备数据:
#自己随机编写的数据
df <- data.frame(
A = c(2,5,6,5,4,8,6,3,8,9),
B = c(15,10,5,18,12,13,16,14,10,9),
C = c(1,3,6,5,2,3,6,2,4,1)
)
#预览数据
head(df)
02 加载包并对数据进行预处理
首先,介绍一下使用到的R包:
#安装包
install.packages("ggplot2")
install.packages("ggpubr")
install.packages("ggsignif")
install.packages("tidyverse")
install.packages("ggprism")
#加载包
library(ggplot2)#绘图包
library(ggpubr)#基于ggplot2的可视化包,主要用于绘制符合出版要求的图形
library(ggsignif)#用于P值计算和显著性标记
library(tidyverse)#数据预处理
library(ggprism)#提供了GraphPad prism风格的主题和颜色,主要用于美化我们的图形
处理数据,将我们之前生成的数据合并为一列,用于后续作图,当然,大家也可以按照处理完成的数据格式准备您的数据,省略这一步,之后直接导入即可:
#使用tidyverse包对数据进行处理
df <- df %>%
gather(key = 'group',value = 'values') #gather()函数可以把多列数据合并成一列数据
head(df)#预览数据
03 绘图
我们先绘制箱线图:
ggplot(df,aes(x=group,y=values))+#指定数据
stat_boxplot(geom = "errorbar", width=0.1,size=0.8)+#添加误差线,注意位置,放到最后则这条先不会被箱体覆盖
geom_boxplot(aes(fill=group), #绘制箱线图函数
outlier.colour="white",size=0.8
对图片进行简单美化,显示数据点:
p<-ggplot(df,aes(x=group,y=values))+#指定数据
stat_boxplot(geom = "errorbar", width=0.1,size=0.8)+#添加误差线,注意位置,放到最后则这条先不会被箱体覆盖
geom_boxplot(aes(fill=group), #绘制箱线图函数
outlier.colour="white",size=0.8)+#异常点去除
theme(panel.background =element_blank(), #背景
axis.line=element_line(),#坐标轴的线设为显示
legend.position="none",plot.title = element_text(size=14))+#图例位置
geom_jitter(width = 0.2)+#添加抖动点
ggtitle("boxplot")#标题
p
04 添加显著性标记
计算p值并将其添加至图中:
p <- p + geom_signif(comparisons = list(c("A","B"),c("A","C"),c("B","C")),#设置需要比较的组
test = t.test, ##计算方法
y_position = c(23,30,26),#图中横线位置设置
tip_length = c(c(0.05,0.05),c(0.05,0.05),c(0.05,0.05)),#横线下方的竖线设置
size=0.8,color="black")
将图中显示的p值使用我们常见的“*”、“**”、“***”替换掉,可以用map_signif_level = T/F进行设置,其中"***"=0.001, "**"=0.01, "*"=0.05:
p <- p + geom_signif(comparisons = list(c("A","B"),
c("A","C"),
c("B","C")),# 设置需要比较的组
map_signif_level = T, #是否使用*显示
test = t.test, ##计算方法
y_position = c(23,30,26),#图中横线位置设置
tip_length = c(c(0.05,0.05),
c(0.05,0.05),
c(0.05,0.05)),#横线下方的竖线设置
size=0.8,color="black")
05 对图片进行美化
这里我们主要使用ggprism包对图片进行美化:
p + theme_prism(palette = "candy_bright",
base_fontface = "plain", # 字体样式,可选 bold, plain, italic
base_family = "serif", # 字体格式,可选 serif, sans, mono, Arial等
base_size = 16, # 图形的字体大小
base_line_size = 0.8, # 坐标轴的粗细
axis_text_angle = 45)+ # 可选值有 0,45,90,270
scale_fill_prism(palette = "candy_bright")
ggprism包自带了很多的好看的主题,大家可以自己通过其中的参数设置得到自己的个性化图片:
p + theme_prism(palette = "ocean",
base_fontface = "plain", # 字体样式,可选 bold, plain, italic
base_family = "serif", # 字体格式,可选 serif, sans, mono, Arial等
base_size = 16, # 图形的字体大小
base_line_size = 0.8, # 坐标轴的粗细
axis_text_angle = 45)+ # 可选值有 0,45,90,270
scale_fill_prism(palette = "ocean")
p + theme_prism(palette = "flames",
base_fontface = "plain", # 字体样式,可选 bold, plain, italic
base_family = "serif", # 字体格式,可选 serif, sans, mono, Arial等
base_size = 16, # 图形的字体大小
base_line_size = 0.8, # 坐标轴的粗细
axis_text_angle = 45)+ # 可选值有 0,45,90,270
scale_fill_prism(palette = "flames")
大家如果需要完整代码,请在后台回复boxplot_p即可获得下载链接!
以上就是今天所有的内容,希望对您有所帮助!!!
大家如果有什么问题请在后台留言,小编看到后会在第一时间回复
欢迎大家点赞、转发并点亮在看,让更多朋友看到!!!
也欢迎大家关注我的公众号