探索Circos图:视觉化基因相关性的强大工具

学术   科技   2024-05-28 23:16   陕西  

在生物信息学中,Circos图是一种常用的可视化工具,可以帮助研究人员直观地展示基因之间的关系。今天我们将通过一个简单的例子,带您了解如何在R语言中绘制一个Circos图。

什么是Circos图?

Circos图是一种环形图,可以显示复杂的关系和数据模式。它特别适合展示基因组数据中的相互作用和关联。Circos图的核心是其环形布局,使得数据的相互关系可以通过环形和弦的方式展示出来,非常直观和美观。

代码详解

# 加载必要的包
options(stringsAsFactors=F)
library(circlize)
library(ComplexHeatmap)

# 读取输入文件
rt <- read.table("input.txt", sep="\t", header=T, check.names=F, row.names=1)
rt <- t(rt)  # 转置数据,使基因成为列

# 计算基因间相关系数
cor1 <- cor(rt)

# 设置图形颜色
# 创建一个颜色渐变,从指定的颜色到白色再到指定的颜色,共64个颜色
col <- colorRampPalette(c("#FE9200""white""#4F8D00"))(64)
cor1[cor1 == 1] <- 0  # 删除相关性为1的项,避免自相关干扰

# 创建颜色矩阵
c1 <- col[round((cor1 + 1) * 31) + 1]  # 将相关性值映射到颜色渐变
col1 <- matrix(c1, ncol=ncol(rt))

# 绘制Circos图
pdf("circos.pdf", width=8, height=8)  # 创建PDF文件以保存图形
par(mar=c(2224))  # 设置图形的边距
circos.par(gap.degree=c(4, rep(2, nrow(cor1)-1)), start.degree = 90)  # 设置环形图参数

# 绘制和弦图
chordDiagram(cor1, grid.col=rainbow(ncol(rt)), col=col1, transparency=0.3, symmetric=T)

# 增加图例
par(xpd=T)
colorlegend(col, vertical=T, labels=c(10, -1), xlim=c(1.21.4), ylim=c(-0.50.5), title="Correlation")

# 关闭PDF设备
dev.off()
circos.clear()
  • read.table:从文件“input.txt”中读取数据,使用制表符(\t)作为分隔符,第一行为列名,将第一列作为行名。

  • t(rt):转置数据矩阵,使得基因成为列,样本成为行。

  • cor(rt):计算转置后数据矩阵中基因间的相关系数,生成一个相关系数矩阵。

  • colorRampPalette:创建一个颜色渐变,从橙色(#FE9200)到白色,再到绿色(#4F8D00),共64个颜色。

  • cor1[cor1 == 1] <- 0:将相关性为1的项设为0,以避免自相关干扰(自相关的值总是1)。

  • round((cor1 + 1) * 31) + 1:将相关性值从[-1, 1]范围映射到颜色渐变的索引范围[1, 64]。

  • matrix(c1, ncol=ncol(rt)):将颜色向量转换为矩阵,以便用于图形绘制。

  • pdf("circos.pdf", width=8, height=8):创建一个PDF文件“circos.pdf”保存图形,设置宽高为8英寸。

  • par(mar=c(2, 2, 2, 4)):设置图形的边距。

  • circos.par(gap.degree=c(4, rep(2, nrow(cor1)-1)), start.degree = 90):设置和弦图的参数,定义每个基因块之间的间隙角度和起始角度。

  • chordDiagram(cor1, grid.col=rainbow(ncol(rt)), col=col1, transparency=0.3, symmetric=T):使用chordDiagram函数绘制和弦图。

  • cor1:相关系数矩阵。

  • grid.col=rainbow(ncol(rt)):设置基因块的颜色,使用彩虹色。

  • col=col1:设置和弦颜色,使用之前创建的颜色矩阵。

  • transparency=0.3:设置和弦的透明度。

  • symmetric=T:设置图形为对称的。

  • par(xpd=T):允许图形元素超出绘图区域。

  • colorlegend(col, vertical=T, labels=c(1, 0, -1), xlim=c(1.2, 1.4), ylim=c(-0.5, 0.5), title="Correlation"):添加颜色图例。

  • col:颜色渐变。

  • vertical=T:垂直放置图例。

  • labels=c(1, 0, -1):设置图例标签。

  • xlimylim:设置图例的坐标范围。

  • title="Correlation":设置图例标题。

  • dev.off():关闭PDF设备,完成绘图。

  • circos.clear():清除Circos图形环境。


END

欢迎关注






往期回顾

科研绘图模板之基因结构图

科研绘图模板之染色体结构图

优雅的绘制拟南芥基因结构图

Mamba:高效的生物信息学包管理工具

探索未来的智能伴侣:Claude2深度解析
Quarto:下一代科学文档和呈现工具

沉浸式翻译网页插件:一种全新的网页体验!

探索Chatpaper:科研人员的智能文献助手

ggtree:一款强大的R语言绘制生物进化树工具

科研绘图模板之多组差异箱线图

科研绘图模板之箱线分面图

科研绘图模板之小提琴分面图


点点“分享”,给我充点儿电吧~

Bioinfor 生信云
分享生信小工具,以及各种测序分析专题,期待有志之士的加入!