Posted on

构建示例数据,此处为不同差异倍数的差异表达基因的数目:

dat<-data.frame('FC'=c(1.5,2,3,4,5),
                'Up'=c(102,121,45,34,12),
                'Down'=c(153,164,85,24,15))

载入ggplot2以及tidyverse包,后者用于将宽数据转变为长数据:

library(ggplot2)
library(tidyverse)

开始绘图,原理就是将另外一组数据转化为负值,然后再修改坐标数值标签:

table<-gather(dat,key=Change,value=Count,-FC) #数据转换,宽长数据
table$FC<-factor(table$FC)
table[which(table$Change == 'Down'), c('Count')] <- table[which(table$Change == 'Down'), c('Count')] * -1   #将另一个样本的数据转化为负数,这是必须的一步
p<-ggplot(table,aes(FC,Count,fill=Change))+geom_col(width=0.5)+coord_flip()+scale_y_continuous(breaks = seq(-200, 200, 50), labels = as.character(abs(seq(-200, 200, 50))), limits = c(-200, 200))+  #设置y轴合适范围,并将负数转化为正数
  theme(panel.grid = element_blank(), panel.background = element_rect(color = 'black', fill = 'transparent'), legend.title = element_blank(),axis.text = element_text(color="black",size=12),axis.title = element_text(color = "black",size=15)) +geom_hline(yintercept = 0, size = 0.4) + #添加中间的线,或者不添加也行  
  annotate('text',label = 'Up', 1, 190)+annotate('text',label = 'Down', 1, -190)  #添加注释信息
ggsave(p,file="plot.pdf")

将x轴倒序排列

table$FC<-factor(table$FC,levels=rev(unique(table$FC)))#将x轴倒序排列
p<-ggplot(table,aes(FC,Count,fill=Change))+geom_col()+coord_flip()+scale_y_continuous(breaks = seq(-200, 200, 50), labels = as.character(abs(seq(-200, 200, 50))), limits = c(-200, 200))+  #设置y轴合适范围,并将负数转化为正数
  theme(panel.grid = element_blank(), panel.background = element_rect(color = 'black', fill = 'transparent'), legend.title = element_blank(),axis.text = element_text(color="black",size=12),axis.title = element_text(color = "black",size=15)) +geom_hline(yintercept = 0, size = 0.4) + #添加中间的线,或者不添加也行  
  annotate('text',label = 'Up', 1, 190)+annotate('text',label = 'Down', 1, -190)  #添加注释信息

发表评论

邮箱地址不会被公开。 必填项已用*标注