ggplot2繪制帶有顯著性分析的box plot

基本函數(shù):
sample_exp為不同年齡分組的表達(dá)矩陣

library(ggplot2)
library(ggsignif)#加載顯著性包

sample_exp$age <- factor(sample_exp$age,levels=c("3m","18m","24m")) #自定義坐標(biāo)軸順序
boxplot <- ggplot(
sample_exp,
aes(x=age,y=exp,fill=age))+
geom_boxplot()+
scale_fill_manual(values = c("#56B4E9", "#E69F00","#996699"))+
geom_signif(comparisons = compare,map_signif_level=TRUE,step_increase=0.1,test = wilcox.test)
  
ggsave("box_plot.png",boxplot,path=path.out)

單細(xì)胞數(shù)據(jù)seurat_object:
seurat_object_list為按照某個meta.data中的因素如cell_ontology_class對seurat_object進(jìn)行的分裂的列表

library(Seurat)
seurat_object_heart_facs_list <- SplitObject(seurat_object_heart_facs,split.by="cell_ontology_class")

BoxPlotforAllcelltype <- function(seurat_object,seurat_object_list,symbol,compare,path.out){
features_all <- rownames(GetAssayData(seurat_object))
    if (symbol %in% features_all ){
        exp <- GetAssayData(seurat_object)
        cell_class <- data.frame(cell=rownames(seurat_object@meta.data),age=seurat_object@meta.data$age,exp=exp[rownames(exp)==symbol,][match(rownames(seurat_object@meta.data),names(exp[rownames(exp)==symbol,]))])
        cell_class$age <- factor(cell_class$age,levels=c("3m","18m","24m")) #自定義坐標(biāo)軸順序
        #整體比較
        boxplot_all <- ggplot(cell_class,aes(x=age,y=exp,fill=age))+
        geom_boxplot()+
        scale_fill_manual(values = c("#56B4E9", "#E69F00","#996699"))+
        geom_signif(comparisons = compare,map_signif_level=TRUE,step_increase=0.1,test = wilcox.test)+
        theme(axis.text=element_text(size=15))
        ggsave(paste(symbol,"_box_plot_all",".png",sep=""),boxplot_all,path=path.out)
        #每種細(xì)胞類型單獨比較
        for (i in names(seurat_object_list)){
            exp_i <- GetAssayData(seurat_object_list[[i]])
            cell_class_i <- data.frame(cell=rownames(seurat_object_list[[i]]@meta.data),age=seurat_object_list[[i]]@meta.data$age,exp=exp_i[rownames(exp_i)==symbol,][match(rownames(seurat_object_list[[i]]@meta.data),names(exp_i[rownames(exp_i)==symbol,]))])
            cell_class_i$age <- factor(cell_class_i$age,levels=c("3m","18m","24m")) #自定義坐標(biāo)軸順序
            boxplot <- ggplot(cell_class_i,aes(x=age,y=exp,fill=age))+
            geom_boxplot()+
            scale_fill_manual(values = c("#56B4E9", "#E69F00","#996699"))+
            geom_signif(comparisons = compare,map_signif_level=TRUE,step_increase=0.1,test = wilcox.test)+ 
            theme(axis.text=element_text(size=15))
            ggsave(paste(symbol,"_box_plot_",i,".png",sep=""),boxplot,path=path.out,width=15,height=20)
            vlnplot <- VlnPlot(seurat_object_list[[i]],features=symbol,group.by="age")
            ggsave(paste(symbol,"_vln_plot_",i,".png",sep=""),vlnplot,path=path.out)
        }
    }
}

BoxPlotforAllcelltype(seurat_object=seurat_object_heart_facs,seurat_object_list=seurat_object_heart_facs_list,symbol=genes,compare=comparisons_facs,path.out=path_out_heart_facs)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容