专栏名称: EasyCharts
EasyCharts,易图表,我们将定期推送各种数据可视化与分析教程,包括Excel(Power BI)、Origin、Sigmaplot、GraphPad、R、Python、Matlab、Tableau、D3.js等。
目录
相关文章推荐
前端早读课  ·  【第3464期】从初级开发者到高级开发者:借 ... ·  17 小时前  
前端早读课  ·  【图书】零基础开发AI ... ·  2 天前  
前端早读课  ·  【第3462期】7 分钟深度理解柯里化 ·  2 天前  
51好读  ›  专栏  ›  EasyCharts

R语言:circos图养成记

EasyCharts  · 公众号  · 前端  · 2017-09-27 10:09

正文

这次我们来个GC含量的圈图,同样的,我在这里也会描绘出各种GC含量圈图的画法,开开眼界。GC含量图在基因组circos图中算是非常有分量的,各种GC含量圈图的表达形式6的飞起。下面开始画几种类型的GC圈图。

首先,加载circlize R包

library(circlize)

读入染色体数据和GC含量数据

data

circos.genomicInitialize(data,plotType="NULL")

circos.track(ylim = c(0, 1), panel.fun = function(x, y) {

chr = CELL_META$sector.index

xlim = CELL_META$xlim

ylim = CELL_META$ylim

circos.rect(xlim[1], 0, xlim[2], 1, col = rand_color(14))

circos.text(mean(xlim), mean(ylim), chr, cex = 1, col = "white",

facing = "inside", niceFacing = TRUE)

}, track.height = 0.1, bg.border = NA)

这些代码之前的一篇文章我已经提过代码了,所以如果不懂,请参考我前面写的文章

读入GC含量数据:

bed1

数据格式如下:


这里GC含量都是采用滑窗进行计算,可以自己写代码也可以用一行命令解决,或者用bedtools。

下面开始画图吧:

类型一:折线GC图

circos.genomicTrackPlotRegion(bed1,panel.fun = function(region, value, ...){

circos.genomicLines(region, value, type = "l",col='green',...)})

##这里面采用的线性类型是I,线的颜色的是绿色

折线图能看出来的是GC含量变化的高低,会有明显的高低峰的区别

类型二:GC含量圈图

前面步骤都一样,我就直接说点图画法:

circos.genomicTrackPlotRegion(bed1,

panel.fun = function(region, value, ...) {

cex = (value[[1]] - min(value[[1]]))/(max(value[[1]]) - min(value[[1]]))#

i = getI(...)

circos.genomicPoints(region, value, cex = cex, pch = 16, col = "red", ...)})

##这里面可以不用管fuction()啥的,知道是个规定就好了,点的大小,我用cex代替,cex是一个变化值,pch选的16,颜色是红色

类型三:GC含量热图

f=colorRamp2(breaks=c(0.38,0.46,0.58),color=c("green","black","red"))

circos.genomicTrackPlotRegion(bed1, stack = TRUE,

panel.fun = function(region, value, ...) {

circos.genomicRect(region, value, col = f(value[[1]]), border = NA, ...)

},bg.border=NA)

##这里需要设置颜色棒,bg.border=NA,是将外围的框框去掉,不用框框

可能是我个人审美有问题,颜色配置的丑,别见怪哈,(内心独白就是:你行你上啊),今天就只介绍了这三种GC含量热图,还有好几种,你们可以关注我啊,然后问我,我就给你们代码啊,比如这种以基线为准的热图,大于多少标为正,小于多少向下:



今天还将会展示俩种共线图,觉得不错,可以转载啊。 载入R包

library(circlize)

准备数据

我自己造了4个数据,就是为了展示这些图

第一个数据,染色体长度,随机造了6条染色体:

第二个数据,共线性位置信息

第三个数据,对应的共线性位置信息

先画第一个共线性图,第四种数据,我待会说


circos.par(gap.degree=5,start.degree=80)

circos.genomicInitialize(bed1)

circos.genomicTrackPlotRegion(bed1,ylim=c(-1,1),track.height=0.05

,bg.col=rand_color(nrow(bed1)))

circos.genomicLink(bed2, bed3,col = rand_color(nrow(bed3)

,transparency = 0.1))

这种图比较适合共线块大,并且共线数据少的类型,但是往往我们利用共线软件获得的共线数据非常多,而且密集,对于这种,我推荐下面一种画法。


配置颜色,相邻位置,或者共线性多的数据的染色体最好配置同种颜色,这里我配置的第四种数据是相邻染色体的共线性多

col1 = c("seagreen","seagreen","salmon","salmon","skyblue","skyblue")

circos.genomicInitialize(bed1)

circos.genomicTrackPlotRegion(bed1,ylim=c(-1,1),track.height=0.05

,bg.col=col1)

names(col1) = unique(bed4[,1])

for(i in seq_len(nrow(bed4))) {

circos.link(bed4[i,1], c(bed4[i,2],bed4[i,3]),

bed4[i,4], c(bed4[i,5],bed4[i,6]),

col =col1[bed4[i,4]])}

鉴于我的审美有限,无法给你们描绘出五彩斑斓的黑色,只能到这样了,代码看不懂的可以看看我之前写的文章。开学了,加油咯!!


参考文献: Zuguang Gu, Lei Gu, Roland Eils, Matthias Schlesner, Benedikt Brors, circlize Implements and enhances circular visualization in R. Bioinformatics



x下面算是circos图的续篇,属于circos的一部分,目前我还没想到这图可以用到哪些生物学数据,但是RNAseq的差异分析应该是可以的。

首先,载入circlize R包

library(circlize)

其次,构建数据,输入的数据为一个矩阵关系。假设我们有A,B,C,D,E 5个组织,分别在正常和干旱产生了若干差异基因,那我们可以构建个矩阵:


data

rownames(data) = c("A","B","C","D","E")  ##构建行名

colnames(data) = c("A","B","C","D","E")  ##列名







请到「今天看啥」查看全文