0
点赞
收藏
分享

微信扫一扫

生信可视化(part1)--柱状图

学习笔记,仅供参考,有错必纠


文章目录

  • ​​生信可视化​​
  • ​​柱状图​​
  • ​​显著性柱状图​​
  • ​​堆积百分比柱状图​​
  • ​​分类柱状图​​

生信可视化

柱状图

输入数据格式:
生信可视化(part1)--柱状图_柱状图

代码:

rt <- read.table("./02.barplotStat/input.txt", header=T, sep="\t",
comment.char = "", check.names =FALSE)
tb <- table(c(as.vector(rt[,1]),as.vector(rt[,2]))) #对两列进行统计
tb <- sort(tb,decreasing =T) #频率高的排前面

#输入每个基因的邻接点节点数目
outTab <- as.data.frame(tb)
colnames(outTab) <- c("Gene","Count")
write.table(outTab,file="statResult.xls",sep="\t",quote=F,row.names=F)

#定义柱状图显示基因数目
showNum <- 20
if(nrow(tb)<showNum){
showNum <- nrow(outTab)
}
n <- as.matrix(tb)[1:showNum,]

#绘制柱状图
par(mar=c(5,7,2,3), xpd=T)
bar <- barplot(n, horiz=TRUE,col="skyblue", names=FALSE,
xlim=c(0,ceiling(max(n)/5)*5),
xlab="Number of adjacent nodes")
text(x=n*0.95,y=bar,n)
text(x=-0.2,y=bar,label=names(n),xpd=T,pos=2)

y轴代表gene的名称,x轴代表gene出现的数目, 通过此图可以看出哪些gene出现次数最多,从而找出核心gene.
生信可视化(part1)--柱状图_r语言_02

显著性柱状图

显著性柱状图,在原本柱状图的基础上增加了柱子颜色(统计学上的显著性),该图一般用于GO结果展示.

输入数据格式:

生信可视化(part1)--柱状图_柱状图_03

代码:

library(ggplot2)
inputFile <- "./03.barplotPval/input.txt" #输入
outFile <- "./03.barplotPval/barplot.pdf" #输出
rt <- read.table(inputFile, header=T, sep="\t", check.names=F)

# 按FDR排序
labels <- rt[order(rt$FDR,decreasing =T),"Term"]
rt$Term <- factor(rt$Term,levels=labels)

#绘制
ggplot(data=rt)+geom_bar(aes(x=Term, y=Count, fill=FDR), stat='identity')+
coord_flip() + # 图像转置
scale_fill_gradient(low="red", high = "blue")+
xlab("Term") + ylab("Gene count") +
theme(axis.text.x=element_text(color="black", size=10),
axis.text.y=element_text(color="black", size=10)) +
scale_y_continuous(expand=c(0, 0)) + scale_x_discrete(expand=c(0,0))+
theme_bw()

显著性柱状图的y轴代表GO的名称,x轴代表富集在GO上gene的数目,柱子颜色越红代表gene在GO上富集越显著.
生信可视化(part1)--柱状图_背景颜色_04

堆积百分比柱状图

输入数据格式:

行名:样品名称
列名:免疫细胞名称
值:免疫细胞的含量(数值)

代码:

inputFile <- "./04.barplotPerent/input.txt"       #输入
outFile <- "./04.barplotPerent/barplot.pdf" #输出

data <- read.table(inputFile,sep="\t",header=T,row.names=1,check.names=F)
data <- t(data)[, 1:30]
# dim(data)
col <- rainbow(nrow(data),s=0.7,v=0.7) # 定义颜色集合,有多少种免疫细胞就有多少种颜色

par(las=1,mar=c(8,5,4,16),mgp=c(3,0.1,0),cex.axis=1.5)
a1 <- barplot(data,col=col,yaxt="n",
ylab="Relative Percent",xaxt="n",cex.lab=1.8)
a2 <- axis(2,tick=F,labels=F)
axis(2,a2,paste0(a2*100,"%"))
axis(1,a1,labels=F)
par(srt=60,xpd=T);text(a1,-0.02,colnames(data),adj=1,cex=0.6);par(srt=0)
ytick2 = cumsum(data[,ncol(data)])
ytick1 = c(0,ytick2[-length(ytick2)])
legend(par('usr')[2]*0.98,par('usr')[4],
legend=rownames(data),col=col, pch=15, bty="n",cex=0.8)

x轴代表样品名,y轴代表免疫细胞的含量(百分比).

生信可视化(part1)--柱状图_柱状图_05

分类柱状图

输入数据格式:

生信可视化(part1)--柱状图_柱状图_06

代码:

library(ggpubr)
inputFile <- "./05.barplotGroup/input.txt" #输入
outFile <- "./05.barplotGroup/barplot.pdf" #输出
rt <- read.table(inputFile, header=T, sep="\t", check.names=F)

#绘制
ggbarplot(rt, x="Term", y="Count",
fill = "ONTOLOGY", # 用颜色区分类别
color = "white", # 背景颜色设置为白色
orientation = "horiz", #横向显示
palette = "aaas", #配色方案
legend = "right", #图例位置
sort.val = "asc", #上升排序,区别于desc
sort.by.groups=TRUE)+ #按组排序
scale_y_continuous(expand=c(0, 0)) + scale_x_discrete(expand=c(0,0))

分类柱状图可用于展示GO富集结果. y轴表示GO名称,x轴代表富集在GO上gene的数目,柱子不同的颜色代表GO的不同类别(BP, CC, MF).

生信可视化(part1)--柱状图_生物信息_07


举报

相关推荐

0 条评论