autoplot转录本信息for循环画图并保存
话不多说,直接上代码
if (!requireNamespace("BiocManager", quietly = TRUE))
install.packages("BiocManager")
BiocManager::install("ggbio",force = TRUE)
rm(list=ls())
library(ggbio) #安装ggbio这个包
#BiocManager::install("EnsDb.Mmusculus.v79")
BiocManager::install("EnsDb.Mmusculus.v75") #下载小鼠的注释ensDB包并加载
#library(EnsDb.Mmusculus.v79)
library(EnsDb.Mmusculus.v75)
注释包的下载地址:
https://bioconductor.org/packages/3.15/data/annotation/
# hg38
#BiocManager::install("EnsDb.Hsapiens.v86")
#library(EnsDb.Hsapiens.v86)
#ensdb <- EnsDb.Hsapiens.v86
#ensdb <- EnsDb.Mmusculus.v79
ensdb <- EnsDb.Mmusculus.v75
#基因名字的大小写,一定要和ensembl上的对应物种的对应起来,不然会报错
#如果用的是人的ensdb数据库,则基因名全部都是大写,如CDC45,在小鼠里面是Cdc45(小鼠里面,首字母大写)
#基因名一定不能错,不然会报错,和ensdb数据库里面的信息匹配不上
#panel.border() = element_blank() 去掉图片的黑色边框
#panel.background = element_blank() 去掉背景颜色
#axis.line.x = element_line(colour = "black", size = 1, lineend = "square") 给横轴添加颜色和横线
setwd("C:\\Users\\gaoshuang\\Desktop\\结果文件\\基因的转录本图\\results") #设置工作保存图的路径
开始画图
#画染色体的图,染色体X,Y,这个字母是需要大写的
#IRanges 里面放的是染色体位点信息
library(GenomicRanges)
p.ideo <- Ideogram(genome = "mm10")
p.ideo + xlim(GRanges("chrX", IRanges(161202097, 161209198))) #X Y染色体都要大写
#画单个基因的转录本剪切信息
autoplot(ensdb,GeneNameFilter('Scml2'),gap.geom = "chevron",label.color = "black", color = "brown",fill = "brown") +
theme(panel.border = element_blank(),
panel.background = element_blank(),
axis.line.x = element_line(colour = "black", size = 1, lineend = "square"))
#把各个转录本的id换为基因名
autoplot(ensdb, ~ symbol == "Scml2", names.expr="gene_name") +
theme(panel.border = element_blank(),
panel.background = element_blank(),
axis.line.x = element_line(colour = "black", size = 1, lineend = "square"))
#画单个基因的转录本信息
autoplot(ensdb,GeneNameFilter("Scml2")) +
theme(panel.border = element_blank(),
panel.background = element_blank(),
axis.line.x = element_line(colour = "black", size = 1, lineend = "square"))
#画单个基因的转录本剪切信息(限制染色体位点信息的)
autoplot(ensdb,GeneNameFilter('Scml2'),label.color = "black",fill = "#1b9e77") +
theme(panel.border = element_blank(),
panel.background = element_blank(),
axis.line.x = element_line(colour = "black", size = 1, lineend = "square"))+
scale_x_continuous(limits = c(161234696,161237492),
breaks = c(seq(161234696,161237492,by=1000)),
position = "top")