学习笔记,仅供参考,有错必纠
文章目录
- 生信可视化
- 排序箱线图
- 差异箱线图
- 多基因差异箱线图
- 多组差异箱线图
- 箱线图分面
生信可视化
排序箱线图
排序箱线图主要用于展示在各个组织或器官中,某个基因的表达量.
输入数据格式:
代码:
library(plyr)
library(ggpubr)
inputFile="./06.boxplotSort/input.txt"
rt <- read.table(inputFile, sep="\t", header=T, check.names=F)
x <- colnames(rt)[2]
y <- colnames(rt)[3]
colnames(rt) <- c("id","Type","expression")
#定义输出图片的排序方式
med <- ddply(rt,"Type",summarise,med=median(expression))
rt$Type <- factor(rt$Type,
levels=med[order(med[,"med"], decreasing = T),"Type"])
#绘制
col <- rainbow(length(levels(factor(rt$Type))))
p <- ggboxplot(rt, x="Type", y="expression", color = "Type",
palette = col,
ylab=y,
xlab=x,
#add = "jitter", #绘制每个样品的散点
legend = "right")
p+rotate_x_text(60) #倾斜角度(60度)
x轴表示肿瘤类型,y轴表示基因AP1的表达量,不同的肿瘤用不同颜色表示,由此图可以看出基因AP1在哪些组织中是高表达的.
差异箱线图
差异箱线图用于比较两组之间某基因表达的差异.
输入数据格式:
代码:
library(ggpubr)
inputFile="./07.boxplotDiff/input.txt"
#读取输入文件,并对输入文件整理
rt <- read.table(inputFile,sep="\t",header=T,check.names=F)
x <- colnames(rt)[2]
y <- colnames(rt)[3]
colnames(rt) <- c("id","Type","Expression")
#设置比较租
group <- levels(factor(rt$Type))
rt$Type <- factor(rt$Type, levels=group)
comp <- combn(group,2)
my_comparisons <- list()
for(i in 1:ncol(comp)){my_comparisons[[i]]<-comp[,i]}
#绘制boxplot
ggboxplot(rt, x="Type", y="Expression", color="Type",
xlab=x,
ylab=y,
legend.title=x,
palette = c("blue","red"),
add = "jitter")+
stat_compare_means(comparisons = my_comparisons)
x轴表示正常组和肿瘤组,y轴表示SEMA3D的基因表达量. 图上方为两组之间差异的P值,当P小于给定显著性水平时,则表示两组之间差异显著.
多基因差异箱线图
输入数据格式:
代码:
library(reshape2)
library(ggpubr)
inputFile <- "./08.boxplotMulti/input.txt"
#读取输入文件
rt <- read.table(inputFile,sep="\t",header=T,check.names=F,row.names=1)
x <- colnames(rt)[1]
colnames(rt)[1] <- "Type"
#把数据转换成gglpot2输入文件
data <- melt(rt,id.vars=c("Type"))
colnames(data) <- c("Type","Gene","Expression")
#绘制boxplot
p <- ggboxplot(data, x="Gene", y="Expression", color = "Type",
ylab="Gene expression",
xlab="",
legend.title=x,
palette = c("blue","red"),
width=0.6, add = "none")
p <- p+rotate_x_text(60)
p+stat_compare_means(aes(group=Type),
method="wilcox.test",
symnum.args=list(cutpoints = c(0, 0.001, 0.01, 0.05, 1), symbols = c("***", "**", "*", " ")),
label = "p.signif")
x轴表示基因名称,y轴表示基因的表达量. 图中,蓝色箱子代表正常样品,红色箱子代表肿瘤样品. 每个gene上方,会用星号*
表示差异的P值,没有*
号则表示该gene在正常组合肿瘤组中没有显著差异.
多组差异箱线图
输入数据格式:
代码:
library(ggpubr)
inputFile <- "./09.boxplotClinical/input.txt"
#读取输入文件
rt <- read.table(inputFile,sep="\t",header=T,check.names=F)
x <- colnames(rt)[2]
y <- colnames(rt)[3]
colnames(rt) <- c("id","Type","Expression")
#设置比较租
group <- levels(factor(rt$Type))
rt$Type <- factor(rt$Type, levels=group)
comp <- combn(group,2)
my_comparisons <- list()
for(i in 1:ncol(comp)){my_comparisons[[i]]<-comp[,i]}
#绘制boxplot
ggboxplot(rt, x="Type", y="Expression", color="Type",
xlab=x,
ylab=y,
legend.title=x,
add = "jitter")+
stat_compare_means(comparisons = my_comparisons)
x轴表示分期,y轴表示gene的表达量. 箱线图的顶部为两两比较的P值,当P小于给定显著性水平时,则表示两个阶段之间gene表达差异显著.
箱线图分面
箱线图分面操作可以在一个图表中,展示多个gene的差异箱线图.
输入数据格式:
代码:
library(ggplot2)
library(reshape2)
inputFile <- "./10.boxplotFacet/input.txt"
#读取输入文件
rt <- read.table(inputFile, header=T,sep="\t",check.names=F,row.names=1)
x <- colnames(rt)[1]
colnames(rt)[1] <- "Type"
#差异分析
geneSig <- c("")
for(gene in colnames(rt)[2:ncol(rt)]){
rt1 <- rt[,c(gene,"Type")]
colnames(rt1) <- c("expression","Type")
p <- 1
if(length(levels(factor(rt1$Type)))>2){
test <- kruskal.test(expression ~ Type, data = rt1)
p <- test$p.value
}else{
test <- wilcox.test(expression ~ Type, data = rt1)
p <- test$p.value
}
Sig <- ifelse(p<0.001,"***",ifelse(p<0.01,"**",ifelse(p<0.05,"*","")))
geneSig <- c(geneSig,Sig)
}
colnames(rt)=paste0(colnames(rt),geneSig)
#把数据转换成ggplot2输入文件
data <- melt(rt,id.vars=c("Type"))
colnames(data) <- c("Type","Gene","Expression")
#绘制
ggplot(data,aes(x=Type,y=Expression,fill=Type))+
guides(fill=guide_legend(title=x))+
labs(x = x, y = "Gene expression")+
geom_boxplot()+ facet_wrap(~Gene,nrow =1)+ theme_bw()+
theme(axis.text.x = element_text(angle = 45, hjust = 1))
x轴表示各个分期,y轴表示gene表达量. 每个子图中表示gene的差异箱线图,子图上方会用星号*
表示各个分期gene表达差异的P值,没有*
号,则表示该gene表达在不同的分期中没有显著差异.