学习笔记,仅供参考,有错必纠
文章目录
- 生信可视化
- 柱状图
- 显著性柱状图
- 堆积百分比柱状图
- 分类柱状图
生信可视化
柱状图
输入数据格式:
代码:
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.
显著性柱状图
显著性柱状图,在原本柱状图的基础上增加了柱子颜色(统计学上的显著性),该图一般用于GO结果展示.
输入数据格式:
代码:
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上富集越显著.
堆积百分比柱状图
输入数据格式:
行名:样品名称
列名:免疫细胞名称
值:免疫细胞的含量(数值)
代码:
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轴代表免疫细胞的含量(百分比).
分类柱状图
输入数据格式:
代码:
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).