效果图
代码
1、设置工作变量
rm(list=ls())#clear Global Environment
setwd('D:\\桌面\\wzs')#设置工作目录
2、R包的安装及加载
#安装包
install.packages("ggplot2")
install.packages("agricolae")
install.packages("tidyverse")
install.packages("car")
install.packages("reshape2")
install.packages("ggprism")
#加载R包
library(ggplot2)#绘图包
library(tidyverse)#数据处理包
library(agricolae)#实现多重比较的包
library(car)#回归诊断的包
library(reshape2)#处理数据的包
library(ggprism)#提供了GraphPad prism风格的主题和颜色,主要用于美化我们的图形
3、加载数据及数据预处理
##导入数据
# df <- read.table("index.txt",header = T, row.names = 1, check.names = F)
#这里使用我自己随机编写的数据
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),
D = c(6,8,8,12,5,8,7,6,8,14),
E = c(20,15,14,16,10,22,18,10,11,12)
)
#预览数据
head(df)
#使用tidyverse包对数据进行处理
df <- df %>%
gather(key = 'group',value = 'values') #gather()函数可以把多列数据合并成一列数据
#预览数据
head(df)
4、数据的正态检验
#检验是否符合正态分布
qqPlot(lm(df$values ~ df$group, data=df),
simulate=TRUE, main="Q-Q Plot", lables=FALSE)
##数据的正态检验
shapiro.test(df$values)
# Bartlett检验
bartlett.test(df$values ~ df$group, data=df)
# Levene检验,对原始数据的正态性不敏感
leveneTest(df$values ~ df$group, data=df)
无论Bartlett检验还是Levene检验,两者的P值都大于0.05,因此接受原假设:样本之间的方差是相同的。因此可以接着做方差分析了。
5、数据的方差检验
variance<-aov(values ~ group, data=df)
variance
6、数据的多重比较
#进行多重比较,不矫正P值
MC <- LSD.test(variance,"group", p.adj="none")#结果显示:标记字母法out$group
GB<- group_by(df,group)#数据转换
error <- summarise(GB,sd(values,na.rm = T))#计算误差
7、数据的整理
#整理数据
error2 <- merge(error ,MC$group,by.x="group",by.y = "row.names",all = F)#合并数据
8、绘图
#定义label
label<-error2$groups
#绘图
p1<-ggplot(df,aes(group,values,fill=group))+#指定数据及坐标数据
stat_boxplot(geom = "errorbar", width=0.1, size=0.8)+#添加误差线,注意位置,放到最后则这条先不会被箱体覆盖
geom_boxplot(position="dodge")+#绘制箱线图函数
ggtitle("boxplot")+#标题
geom_text(data=error2,aes(x=group,y=values+9,label=label),color="red",fontface="bold")+#添加字母标记
geom_jitter(alpha=0.8,width = 0.2,size=1)+#添加抖动点
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包修改颜色
theme(legend.position = 'none')#去除图例
p1
大家如果需要完整代码,请在后台回复boxplot_letters即可获得下载链接!
以上就是今天所有的内容,希望对您有所帮助!!!
欢迎大家关注微信公众号 [科研后花园],每天更新科研小技巧