本文采用circlize包自带的示例数据绘制Circos图,简要描述了circlize包的绘图思想和原理,以及几个常用参数的作用。


Circos图(圈图)功能

可展示的数据:基因密度、基因功能注释、CG含量、突变频谱、CNV分布、组蛋白修饰、甲基化密度、转座子与顺式调控元件分布等等;

组学可涉及:基因组、外显子组、甲基化组、ATAC-Seq和ChiP-Seq等组学等等;

复杂度可包括:多个样本、多个组织,多个时期的组学数据;

图的类型可涵盖:(复杂)热图、散点图、密度图、折线图、(堆积)柱状图、弦图等等,同时展现多种图形及其变化关系。


# 本计算机的R的版本:
.libPaths()
## [1] "C:/Program Files/R/R-4.0.4/library"
## [2] "C:/Users/HP/Documents/R/win-library/4.0"
# R-4.0.3
# [1] "C:/Users/ACER/Documents/R/win-library/4.0"
# [2] "C:/Program Files/R/R-4.0.3/library" # 安装新的R包只会默认安装到上述路径中。# 安装circlize包
options("repos" = c(CRAN="http://mirrors.tuna.tsinghua.edu.cn/CRAN/"))
if (! require(circlize)) {install.packages('circlize')
}
## Loading required package: circlize
## Warning: package 'circlize' was built under R version 4.0.5
## ========================================
## circlize version 0.4.12
## CRAN page: https://cran.r-project.org/package=circlize
## Github page: https://github.com/jokergoo/circlize
## Documentation: https://jokergoo.github.io/circlize_book/book/
##
## If you use it in published research, please cite:
## Gu, Z. circlize implements and enhances circular visualization
##   in R. Bioinformatics 2014.
##
## This message can be suppressed by:
##   suppressPackageStartupMessages(library(circlize))
## ========================================
library(circlize)

1 |  使用测试数据绘图

获取测试绘图的数据:

一般以bed格式给出,前三列一般是坐标,后面可以增加任意列作为注释

函数generateRandomBed用于获取示例的bed数据

bed = generateRandomBed(nr = 200)
head(bed)
##    chr    start      end     value1
## 1 chr1  1265305 23689474 -0.3692290
## 2 chr1 33693147 34684697  0.1979085
## 3 chr1 46407775 50257809 -0.2200499
## 4 chr1 50933154 50945647 -0.1620185
## 5 chr1 53258978 54441031  1.2335410
## 6 chr1 59225767 66683215  0.2868235

绘制基因组(人类),版本为hg38 :

使用circos.initializeWithIdeogram函数,其参数species的帮助:

Abbreviations of species. e.g. hg19 for human, mm10 for mouse. If this value is specified, the function will download cytoBand.txt.gz from UCSC website automatically. If there is no cytoband for user’s species, it will keep on trying to download chromInfo file. Pass to read.cytoband or read.chromInfo.


circos.clear() # 绘图初始化circos.initializeWithIdeogram(species = "hg38")

注意:后续的绘图函数都依赖于circos.initializeWithIdeogram

添加SNV、INDEL的信息,以点图展示,基于上面生成的bed数据:


circos.clear() # 绘图初始化circos.initializeWithIdeogram(species = "hg38")circos.genomicTrack(bed,
panel.fun = function(region, value, ...) {
circos.genomicPoints(region, value, pch = 16, cex = 0.5, col = 1)})

添加CNV

circos.clear() # 绘图初始化circos.initializeWithIdeogram(species = "hg38")circos.genomicTrack(bed,
panel.fun = function(region, value, ...) {circos.genomicPoints(region, value, pch = 16, cex = 0.5, col = 1)})circos.genomicTrack(bed, panel.fun = function(region, value, ...) {circos.genomicRect(region, value, ytop.column = 1, ybottom = 0, col = ifelse(value[[1]] > 0, "red", "green"), ...)circos.lines(CELL_META$cell.xlim, c(0, 0), lty = 2, col = "#00000040")
})# 大于阈值(例如0)即为红色柱子,否则为绿色柱子

示例数据绘图——高级

circos.clear()
circos.par("start.degree" = 90)
circos.par("gap.degree" = rep(c(2, 2), 12), ADD = TRUE)
circos.initializeWithIdeogram(species = "hg38", plotType = c("axis", "labels"))
text(0, 0, "Sample1", cex = 1)
circos.genomicPoints(region, value, pch = 16, cex = 0.5, col = 1)})
# 添加CNV:
circos.genomicTrack(bed, panel.fun = function(region, value, ...) {circos.genomicRect(region, value, ytop.column = 1, ybottom = 0, col = ifelse(value[[1]] > 0, "red", "green"), ...)circos.lines(CELL_META$cell.xlim, c(0, 0), lty = 2, col = "#00000040")
})# 大于阈值(例如0)即为红色柱子,否则为绿色柱子

set.seed(50)bed = generateRandomBed(nr = 200)
circos.clear()
circos.par("start.degree" = 90)
circos.par("gap.degree" = rep(c(2, 2), 12), ADD = TRUE)
circos.initializeWithIdeogram(species = "hg38", plotType = c("axis"))
text(0, 0, "Sample1", cex = 1)
# 染色体使用不同颜色的方框表示:
circos.track(ylim = c(0, 1), panel.fun = function(x, y) {chr = CELL_META$sector.indexxlim = CELL_META$xlimylim = CELL_META$ylimcircos.rect(xlim[1], 0, xlim[2], 1, col = rand_color(24))circos.text(mean(xlim), mean(ylim), chr, cex = 0.6, col = "white",facing = "inside", niceFacing = TRUE)
}, track.height = 0.1, bg.border = NA)
# 添加SNV、INDEL的信息:
circos.genomicTrack(bed, panel.fun = function(region, value, ...) {circos.genomicPoints(region, value, pch = 16, cex = 0.5, col = 1)})# 添加CNV:
circos.genomicTrack(bed, panel.fun = function(region, value, ...) {circos.genomicRect(region, value, ytop.column = 1, ybottom = 0, col = ifelse(value[[1]] > 0, "red", "green"), ...)circos.lines(CELL_META$cell.xlim, c(0, 0), lty = 2, col = "#00000040")})# 大于阈值(例如0)即为红色柱子,否则为绿色柱子

# bed(文件多样本value的合并)热图在内层:
circos.clear()
circos.initializeWithIdeogram()
bed = generateRandomBed(nr = 100, nc = 4)
col_fun = colorRamp2(c(-1, 0, 1), c("green", "black", "red"))
circos.genomicHeatmap(bed, col = col_fun, side = "inside", border = "white")

# bed(文件多样本value的合并)热图在外层:
circos.clear()
circos.initializeWithIdeogram(plotType = NULL)
circos.genomicHeatmap(bed, col = col_fun, side = "outside",line_col = as.numeric(factor(bed[[1]])))
circos.genomicIdeogram()

# 加Label:
circos.clear()
circos.initializeWithIdeogram()
bed.1 = generateRandomBed(nr = 100, nc = 4)
circos.genomicHeatmap(bed.1, col = col_fun, side = "outside",line_col = as.numeric(factor(bed[[1]])))
bed.2 = generateRandomBed(nr = 50, fun = function(k) sample(letters, k, replace = TRUE))
bed.2[1, 4] = "aaaaa"
circos.genomicLabels(bed.2, labels.column = 4, side = "inside")# circos.genomicIdeogram()

2 |  示例代码汇总

rm(list = ls())
set.seed(100)bed = generateRandomBed(nr = 100)
col_fun = colorRamp2(c(-1, 0, 1), c("green", "black", "red"))
# col_fun = colorRamp2(c(-1, 0, 1), c("navy", "grey", "firebrick3"))circos.clear()#pdf("./Circos.hg38.pdf")circos.par("start.degree" = 90)
circos.par("gap.degree" = rep(c(2, 2), 12), ADD = TRUE)
circos.initializeWithIdeogram(species = "hg38", plotType = c("axis"))
text(0, 0, "Sample1", cex = 1)####### 染色体使用不同颜色的方框表示:
circos.track(ylim = c(0, 1), panel.fun = function(x, y) {chr = CELL_META$sector.indexxlim = CELL_META$xlimylim = CELL_META$ylimcircos.rect(xlim[1], 0, xlim[2], 1, col = rand_color(24))circos.text(mean(xlim), mean(ylim), chr, cex = 0.6, col = "white",facing = "inside", niceFacing = TRUE)
}, track.height = 0.1, bg.border = NA)####### 添加SNV、INDEL的信息:
circos.genomicTrack(bed, panel.fun = function(region, value, ...) {circos.genomicPoints(region, value, pch = 16, cex = 0.5, col = 1)},stack = F, track.height = 0.1)####### 添加CNV:
circos.genomicTrack(bed, panel.fun = function(region, value, ...) {circos.genomicRect(region, value, ytop.column = 1, ybottom = 0, col = ifelse(value[[1]] > 0, "red", "green"), ...)circos.lines(CELL_META$cell.xlim, c(0, 0), lty = 2, col = "#00000040")}, stack = F, track.height = 0.1)
# 大于阈值(例如0)即为红色柱子,否则为绿色柱子####### 热图:
bed.1 = generateRandomBed(nr = 70, nc = 4)
# bed.1 = bed.1[1:10, ]
circos.genomicHeatmap(bed.1, col = col_fun, side = "inside", border = "white",connection_height = mm_h(2),heatmap_height = 0.1,line_col = as.numeric(factor(bed[[1]])))
####### Label
bed.2 = generateRandomBed(nr = 10, fun = function(k) sample(letters, k, replace = TRUE))
bed.2[1, 4] = "aaa"
bed.2$value1 = paste0("Gene_",bed.2$value1)
circos.genomicLabels(bed.2, labels.column = 4,connection_height = mm_h(2),labels_height =cm_h(1.0), side = "inside")# circos.genomicIdeogram()# dev.off()

如果您在绘制图中出现如下报错:

是由于画布空间不足,可以将整块代码复制到Console中运行:

相关链接:

https://jokergoo.github.io/circlize_book/book/

https://academic.oup.com/bioinformatics/article/30/19/2811/2422259

http://www.sci666.net/59536.html

撰写:叶明皓   校对:宋红卫

采用circlize包绘制Circos图相关推荐

  1. 使用circlize包绘制和弦图

    在写这个教程是3月16号凌晨的5点钟,这个点还没睡的话,一是在外面玩,二是有事情.我是属于第二种情况,昨晚从下班6点后一直在办公室,点了个外卖,吃结束后差不多7点.然后,就一直在弄自己的事情,一直到凌 ...

  2. R语言可视化学习笔记之ggridges包绘制山峦图

    作者:严涛 浙江大学作物遗传育种在读研究生(生物信息学方向)伪码农,R语言爱好者,爱开源. 严涛老师的绘图教程还有: gganimate |诺奖文章里面的动图绘制教程来了!! ggplot2学习笔记之 ...

  3. python绘制分形图形教程_#python绘制分形图形教程#如何用Python绘制Circos图

    用Python实现Circos图的在线绘制的Circos有局限性,如对数据的要求.个性局限理速度等的问题,但如果你是一个Pythoneer或者喜欢用更加Pythonic的方式来个性化地绘制Circos ...

  4. R语言ggplot2可视化绘制Marimekko/Mosaic图实战:自定义函数绘制Marimekko/Mosaic图(添加数值、标题、色彩配置)、ggmosaic包绘制Marimekko图

    R语言ggplot2可视化绘制Marimekko/Mosaic图实战:自定义函数绘制Marimekko/Mosaic图(添加数值.标题.色彩配置).ggmosaic包绘制Marimekko图 目录

  5. R语言使用beanplot包绘制豆荚图实战:与箱图、小提琴图对比、绘制不对称的豆荚图

    R语言使用beanplot包绘制豆荚图实战:与箱图.小提琴图对比.绘制不对称的豆荚图 目录 R语言使用beanplot包绘制豆荚图实战 #包的安装和导入 #豆荚图与箱图

  6. R语言使用forestplot包绘制森林图:编码创建森林图仿真数据、汇总线修改、元素位置调整、垂直线、字体、风格、置信区间、线型、图例、刻度、标签等

    R语言使用forestplot包绘制森林图:编码创建森林图仿真数据.汇总线修改.元素位置调整.垂直线.字体.风格.置信区间.线型.图例.刻度.标签等 目录

  7. 利用Python的folium包绘制城市道路图!专业地图!

    写在前面 很长一段时间内,我都在研究在线地图的开发者文档,百度地图和高德地图的开发者中心提供了丰富的在线地图服务,虽然有一定的权限限制,但不得不说,还是给我的科研工作提供了特别方便的工具,在博客前面我 ...

  8. python画circos图_教你在线绘制circos图

    相信大家都听说过circos图,但是亲自画过的人可能就很少,这主要因为软件的安装和使用稍微有一点麻烦.其实,circos图也是可以在线绘制的,这样就简单多了!一起来了解一下吧! 在circos官网(h ...

  9. R语言forestplot包绘制森林图

    森林图在论文中很常见,多用于表示多因素分析中的变量与结果变量的比值效应,可以用图示的方法比较直观的绘制出来.既往我们在文章<R语言快速绘制多因素回归分析森林图(1)><R语言使用fo ...

最新文章

  1. jodd-StringTemplateParser使用
  2. C# 实验三 判断一个字符、判断三角形、千名学生、a+aa+aaa+aaaa、求数列相加、约瑟夫环
  3. ***K近邻Survey-Distance总结
  4. HDU 6631 line symmetric(枚举)
  5. 前端处理跨域的几种方式
  6. Struts2 多方法的Action
  7. C# ActiveX开发部署更新
  8. java中继承applet类_java.applet.Applet类
  9. bzoj 3036: 绿豆蛙的归宿(Dp)
  10. [转载] python程序所需的图片通过base64编码成字符串放在代码中
  11. TalkingData崔晓波:移动数据工具发展的三个阶段
  12. android 添加联系人地址,android – 如何向联系人添加新字段?
  13. 男友问别人:你裙子里穿什么了?
  14. C语言计算器代码(带有报告)
  15. SoapUI接口测试断言
  16. python snap7开发手册_python-snap7开发笔记
  17. 汽车诊断协议 - CAN BUS协议
  18. Django 一文看懂urls.py与views.py的联系
  19. [导入]冰刃Icesword 1.22测试版发布
  20. [h5棋牌项目]-05-重载配置导致的内存泄露

热门文章

  1. 无线网ppp服务器连接失败,关于无线上网PPP拨号问题
  2. tunel凋亡试剂盒说明书_QIA33 TUNEL显色法细胞凋亡检测试剂盒使用说明书_Merck
  3. 没有对公账户怎么开通认证微信公众号?
  4. python3 爬虫 爬取华为应用市场 APP应用评论(一)爬取全部评论——学霸君
  5. PC端 kindle 导入 电子书
  6. Android 录制手机内部声音(screen recorder)framework层问题分析
  7. DirectX11与DirectX12在古墓丽影暗影中的表现
  8. 一个超好看的音乐网站设计与实现(HTML+CSS)
  9. 金明的预算方案(01背包)
  10. Git No newline at end of file