批量显著性分析及作图

数据可视化 数据可视化 193 人阅读 | 0 人回复 | 2024-08-20

当你的材料之间有多个性状数据需要进行显著性分析时,这个代码会对你非常有帮助。

1 数据准备

第一列为分组信息,表头一定要为“Hap”,分组数量不限,后面几列为你的性状数据。

2 作图代码

#载入R包
library(agricolae)
library(gridExtra)
library(ggplot2)

#读取文件,注意自行更改输入文件
md <- read.table("C:/Users/bfcui/Desktop/example.txt",header=T) 

#将表头写入colnames
colnames=names(md) 
plot_list = list()

#进行循环作图
for(i in 2:length(colnames)){
  real= colnames[i]
  #将作图数据写入data_i
  data_i <- md[,c(1,i)] 
  data_i <- na.omit(data_i) 
  #将数据表头改为"Hap trait"
  colnames(data_i)=c("Hap","trait")
  #计算多重比较
  mod = aov(data_i$trait ~ data_i$Hap, data=data_i)
  re = LSD.test(mod,"data_i$Hap",alpha = 0.05)
  mean<- re$means[,1]
  mar<- re$groups
  rownamemar <- row.names(mar)
  newmar<-data.frame(rownamemar,mar)
  sort<- newmar[order(newmar$rownamemar),]
  pop<-sort$rownamemar
  marker<-sort$groups
  sd<-re$means[,2]
  plotdata<-data.frame(pop,marker,mean,sd)
  #开始作图(这边是用的小提琴图,大家可自行更改美化)
  pi <- ggplot(data_i,aes(x=Hap,y=trait))+
    geom_violin(aes(fill = Hap),position = position_dodge(width = 1), scale = 'width',
                alpha=0.8,width=0.8,show.legend = F)+ 
    theme(panel.grid = element_blank(), 
          panel.background = element_rect(color = "black",fill = "transparent"),
          legend.title=element_blank(),
          axis.title.x=element_blank())+
    geom_boxplot(position = position_dodge(width = 1),
                 outlier.colour="black",
                 outlier.shape=16,outlier.size = 0.5, width = 0.2,
                 show.legend = FALSE,fill="lightgray")+
    geom_text(data=plotdata,aes(x=factor(pop),y=mean+sd*5,label=marker),hjust=0)+
    theme_classic()+
    ylab(real)+xlab("")
  plot_list[[i]] = pi
}
nrow_num = ceiling((length(colnames)-1)/4)
height_num = nrow_num*2

#保存为pdf,注意自行更改保存路径
pdf(file='C:/Users/bfcui/Desktop/1.pdf',width = 10) # width为画布的宽度
new_list=plot_list[2:length(colnames)]
grid.arrange(grobs = new_list, ncol = 3,nrow=nrow_num) #原始ncol为每行小提琴图的个数
dev.off()

3 结果解读

结果如下所示,纵坐标为为“性状名称”,横坐标为“分组信息”,小提琴图不同字母表示存在显著性差异。

微信扫一扫分享文章

+11
无需登陆也可“点赞”支持作者

最近谁赞过

分享到:
评论

使用道具 举报

300 积分
19 主题
+ 关注
热门推荐