0
点赞
收藏
分享

微信扫一扫

生信可视化(part3)--小提琴图

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


文章目录

  • ​​生信可视化​​
  • ​​小提琴图​​
  • ​​多基因小提琴图​​
  • ​​小提琴分面图​​

生信可视化

小提琴图

输入数据格式:
生信可视化(part3)--小提琴图_数据转换

代码:

library(ggpubr)       
inputFile <- "./11.vioplot/input.txt"


rt <- read.table(inputFile,header=T,sep="\t",check.names=F)
x <- colnames(rt)[2]
y <- colnames(rt)[3]
colnames(rt) <- c("id","Type","Expression")

#s设置比较组
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]}

#绘制
ggviolin(rt, x="Type", y="Expression", fill = "Type",
xlab=x, ylab=y,
legend.title=x,
add = "boxplot", add.params = list(fill="white")) +
stat_compare_means(comparisons = my_comparisons)

x轴表示分期,y轴表示某个gene的表达量,图形展示的内容为某个gene的表达在不同的分期之间是否具有差异. 图形上方展示了两组分期之间gene表达差异的P值. 若P值大于给定的显著性水平生信可视化(part3)--小提琴图_r语言_02,则表示分期之间具有显著差异.

生信可视化(part3)--小提琴图_生物信息_03

多基因小提琴图

输入数据格式:
生信可视化(part3)--小提琴图_r语言_04

代码:

library(reshape2)
library(ggpubr)
inputFile <- "./12.vioplotMulti/input.txt"

#读取文件
rt <- read.table(inputFile,header=T,sep="\t",check.names=F,row.names=1)
x <- colnames(rt)[1]
colnames(rt)[1] <- "Type"

#把数据转换成ggplot2数据文件
data <- melt(rt,id.vars=c("Type"))
colnames(data) <- c("Type","Gene","Expression")

#绘制小提琴图
p <- ggviolin(data, x="Gene", y="Expression", color = "Type",
ylab="Gene expression",
xlab=x,
legend.title=x,
add.params = list(fill="white"),
palette = c("blue","red"),
width=1, add = "boxplot")
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轴为各个gene,y轴为gene的表达量. 每个gene都对应着两个箱线图,蓝色表示正常组,红色表示肿瘤组. 每个gene上方,会用星号​​*​​​表示差异的P值,没有​​*​​号则表示该gene在正常组和肿瘤组中没有显著差异.

生信可视化(part3)--小提琴图_数据格式_05

小提琴分面图

通过小提琴分面图可以在多个gene中展示小提琴图.

输入数据格式:
生信可视化(part3)--小提琴图_r语言_06

代码:

library(ggplot2)
library(reshape2)
inputFile="./13.vioplotFacet/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_violin()+ geom_boxplot(width=0.2,position=position_dodge(0.9))+
facet_wrap(~Gene,nrow =2)+ theme_bw()+
theme(axis.text.x = element_text(angle = 45, hjust = 1))

生信可视化(part3)--小提琴图_数据转换_07


举报

相关推荐

0 条评论