ggplot点图 **火山图工单** 1.目前流程的火山图是将基因分为3类,差异显著上调,差异显著下调和差异不显著。 2.老师根据文献图,想把火山图分为4类,表达显著_差异较大;表达显著_差异较小;表达不显著_差异较大;表达不显著_差异较小。 3.在流程火山图的基础上把分组信息这一块给更改即可。 /TJPROJ6/RNA_SH/personal_dir/wangshuai/zuotu/volcano_plot_gongdan_230425-00050 使用参数和流程一样 volcano["group"] <- "Not_sig" volcano[which(volcano["padj"] <= q & volcano["log2FoldChange"] >= log2(fc)),"group"] <- "Pvalue_and_Log2fc" volcano[which(volcano["padj"] <= q & volcano["log2FoldChange"] <= -log2(fc)),"group"] <- "Pvalue_and_Log2fc" volcano[which(volcano["padj"] > q & volcano["log2FoldChange"] >= log2(fc)),"group"] <- "Log2fc" volcano[which(volcano["padj"] > q & volcano["log2FoldChange"] <= -log2(fc)),"group"] <- "Log2fc" volcano[which(volcano["padj"] < q & volcano["log2FoldChange"] > -log2(fc) & volcano["log2FoldChange"] < log2(fc)),"group"] <- "Pvalue" Not_sig_number <- nrow(volcano[which(volcano["group"]=='Not_sig'),]) Pvalue_and_Log2fc_number <- nrow(volcano[which(volcano["group"]=='Pvalue_and_Log2fc'),]) Log2fc_number <- nrow(volcano[which(volcano["group"]=='Log2fc'),]) Pvalue_number <- nrow(volcano[which(volcano["group"]=='Pvalue'),]) volcano[which(volcano["group"]=='Not_sig'),"group"] <- paste('Not_sig',Not_sig_number,sep=' ') volcano[which(volcano["group"]=='Pvalue_and_Log2fc'),"group"] <- paste('Pvalue_and_Log2fc',Pvalue_and_Log2fc_number,sep=' ') volcano[which(volcano["group"]=='Log2fc'),"group"] <- paste('Log2fc',Log2fc_number,sep=' ') volcano[which(volcano["group"]=='Pvalue'),"group"] <- paste('Pvalue',Pvalue_number,sep=' ') volcano$group <- factor(volcano$group,levels=c(paste('Pvalue_and_Log2fc',Pvalue_and_Log2fc_number,sep=' '),paste('Log2fc',Log2fc_number,sep=' '),paste('Not_sig',Not_sig_number,sep=' '),paste('Pvalue',Pvalue_number,sep=' '))) 改前:{{:组会分享:fb_18_1vsck_volcano_6_.png?400|}}改后:{{:组会分享:fb_18_1vsck_volcano_5_.png?400|}} **柱状图工单** **常见分面型柱状图** 柱状图geom_bar facet_grid:是基于两个因子进行设置,facets表示形式为:变量~变量(行~列) 按行分面:facet_grid(Category~.,scales = 'free') 按列分面:facet_grid(.~Category,scales = 'free') 如下图1 facet_grid:适用于当有两个离散变量,并且这些变量的所有组合存在于数据中时 facet_wrap:适用于只有一个具有多个级别的变量 图1 p <- p + geom_bar(stat='identity') + facet_grid(.~Category,scales = 'free') + theme(strip.text.y = element_text(angle = 0),plot.margin=unit(c(1,1,2,4),'lines'))+theme(axis.text.x=element_text(hjust=1,angle=65,size=6.4,face ='bold')) 图2 ggplot(stat,aes(x=Description,y=Number_of_genes,fill=Category))+ geom_bar(stat='identity') + facet_grid(.~class) + coord_flip()+ theme(strip.text.y = element_text(angle = 0),plot.margin=unit(c(1,1,2,4),'lines'))+ theme(axis.text.x=element_text(hjust=1,angle=65,size=6.4,face ='bold')) 图1:{{:组会分享:1682584844478.png?400|}}图2{{:组会分享:rplot29.png?400|}} **常见截断坐标轴柱状图** scale_y_break和scale_x_break:分别对x轴和y轴进行截断 #添加多个截断坐标: p1 + scale_x_break(c(6, 10), scales = 1.5) + scale_x_break(c(15, 21), scales=2)+scale_x_break(c(25, 30),scales=2.5) sec.axis:设置第二坐标轴 如下图: p1 <- ggplot(data,aes(x=Name,y=Number,fill=Ontology))+ geom_bar(stat='identity')+theme(axis.text.x=element_text(hjust=1,angle=65,size=6.4,face ='bold'))+ scale_y_continuous(expand = c(0,0),limits = c(0,500), sec.axis = sec_axis(~./14, name = '-Log10(P value)', breaks = seq(0,40,10)))+scale_y_break(c(20, 400 )) 图1:{{:组会分享:1682585742319.png?400|}} **GO柱状图** 1.将柱状图的高度分别按照BP CC MF的分类进行排序 /TJPROJ6/RNA_SH/personal_dir/wangshuai/zuotu/noref_GO_bar_plot/goseq_bar_plot_v2.R 1:函数cbind() 和rbind() 把向量和矩阵拼成一个新的矩阵 2:cbind: 根据列进行合并,即叠加所有列;rbind: 根据行进行合并,就是行的叠加 dat<-dat[order(dat[,4]),] 按第四列重新排序 BP <- subset(dat2,dat2$Term_type=='biological_process') BP <- BP[order(BP$DEG_item,decreasing=T),] CC <- subset(dat2,dat2$Term_type=='cellular_component') CC <- CC[order(CC$DEG_item,decreasing=T),] MF <- subset(dat2,dat2$Term_type=='molecular_function') MF <- MF[order(MF$DEG_item,decreasing=T),] dat2 <- rbind(BP,CC,MF) write.table(dat2,file="aaa.xls",quote=F,row.names=F) 以上是将BP CC MF 分别进行排序,达到不同分组的柱状图从高往低排序 如下图: 图1:{{:组会分享1:16826519452158.png?400|}}