Circos图,又称Chord Diagram,中文名“和弦图”,在基因突变的高大上文章中非常常见,主要用于快速查看个体基因突变位点的主要染色体分布区,以及不同染色体突变频率的分布情况。偶然间看到R绘制该图的方法,学习了一下,跟大家分享一下。
如下表是经过整理过的一个样板数据:
ID | Chr.1 | Chr.2 | Chr.3 | Chr.4 |
1 | 105 | 450 | 92 | 96 |
2 | 20 | 46 | 78 | 33 |
3 | 118 | 553 | 94 | 317 |
4 | 100 | 18 | 108 | 104 |
简单解释即是:个体1在1号染色体上有105个突变位点,2号染色体上有450个突变位点,3号93个突变位点……
这张表如果用Circos图来表示如下:
真正的测序数据远比示例中的表格复杂很多,通常原始数据很可能是下面这样的矩阵形式:
不管你信不信,对于生物信息学的人来说,Circos图远比那张乏味的表以及上面这张毫无特色的矩阵图好看很多。
具体编码如下:
- library(statnet)
- library(circlize)
- my.data <- matrix(
- c( 105, 20, 118, 100,
- 450, 46, 553, 18,
- 92, 78, 94, 108,
- 96, 33, 317, 104),4,4
- )
- rownames(my.data) <- c("ID.1", "ID.2", "ID.3", "ID.4")
- colnames(my.data) <- c("Chr.1", "Chr.2", "Chr.3", "Chr.4")
- grid.col = NULL
- grid.col[c("ID.1", "ID.2", "ID.3", "ID.4")] = c("red", "yellow","green", "blue")
- grid.col[c("Chr.1", "Chr.2", "Chr.3", "Chr.4")] = "grey"
- circos.par(gap.degree = c(rep(2, nrow(my.data)-1), 10, rep(2, ncol(my.data)-1), 10),
- start.degree = 180)
- chordDiagram(my.data,
- directional = TRUE,
- diffHeight = 0.06,
- grid.col = grid.col,
- transparency = 0.5)
- circos.clear()
欢迎交流,^_^