R绘图技巧27| 多组学时代—热图也要 “卷” 起来!

西瓜站长 生信益站 2023-07-11 08:02 Posted on 湖北
Image

OmicCircos 是一款 R 应用程序和软件包,用于生成组学数据的高质量圆形图。相比矩形热图,环形热图有以下优势

  • 空间利用率高:环形热图将数据呈现为一个圆环状,相比矩形热图能更好地利用空间。它可以容纳更多的数据点,在有限的显示空间内展示更多信息。比如同时展示基因表达、CNV、融合基因、相关性等信息

  • 视觉效果突出:由于环形热图的设计较为独特,其视觉效果往往更加突出和引人注目。通过鲜明的颜色和环形排列,环形热图能够快速吸引用户的注意力,使得数据的分布和模式更易于理解和解读。

  • 可扩展性强:环形热图的结构使得它在处理大规模数据时表现出色。因为数据点可以沿着圆环的周长进行排列,所以环形热图可以轻松适应数千甚至数百万个数据点的展示需求。

  • 易于比较和对比:环形热图的环形结构使得不同环之间的比较和对比变得更加直观和方便。通过观察不同区域的颜色和强度,用户能够更准确地判断数据的差异和相似性。

  • 适用于周期性数据:对于周期性数据(例如时间序列数据),环形热图可以以环形的方式呈现,更好地展示数据的周期模式和趋势。

实际案例

Top 100 DEGs 的连接性、表达模式和染色体位置的圆形可视化。

「案例 1:」

Image
https://doi.org/10.18632/aging.102087

「案例 2:」

Image
https://doi.org/10.1186/s41065-021-00216-7

操作示例

安装和加载OmicCircos

# BiocManager::install("OmicCircos")
options(stringsAsFactors = FALSE)
library(OmicCircos)
## hg19核型文件
data(UCSC.hg19.chr)
head(UCSC.hg19.chr)
Image
染色体核型文件格式

加载数据:

data("TCGA.PAM50_genefu_hg18");
data("TCGA.BC.fus");
data("TCGA.BC.cnv.2k.60");
data("TCGA.BC.gene.exp.2k.60");
data("TCGA.BC.sample60");
data("TCGA.BC_Her2_cnv_exp");

head(TCGA.BC.fus)
Image
融合基因数据格式
pvalue <- -1 * log10(TCGA.BC_Her2_cnv_exp[,5]);
pvalue <- cbind(TCGA.BC_Her2_cnv_exp[,c(1:3)], pvalue);
head(pvalue)
Image
pvalue数据格式
Her2.i <- which(TCGA.BC.sample60[,2] == "Her2");
Her2.n <- TCGA.BC.sample60[Her2.i,1];

Her2.j <- which(colnames(TCGA.BC.cnv.2k.60) %in% Her2.n);
cnv    <- TCGA.BC.cnv.2k.60[,c(1:3,Her2.j)];
cnv.m  <- cnv[,c(4:ncol(cnv))];
cnv.m[cnv.m >  2] <- 2;
cnv.m[cnv.m < -2] <- -2;
cnv <- cbind(cnv[,1:3], cnv.m);
head(cnv[,1:7])
Image
CNV数据格式
Her2.j   <- which(colnames(TCGA.BC.gene.exp.2k.60) %in% Her2.n);
gene.exp <- TCGA.BC.gene.exp.2k.60[,c(1:3,Her2.j)];

head(gene.exp[,1:7])
Image
基因表达数据格式
colors <- rainbow(10, alpha=0.5);

library(scales)
show_col(colors, ncol = 5)
Image

通过环形叠加可视化多个数据集:

# 设置图形四周的边距
par(mar=c(0000));

# 创建空白的绘图区域
plot(c(1,800), c(1,800), type="n", axes=FALSE, xlab="", ylab="", main="");

# cir设置基因组版本
# W设置每一圈的宽度
# 首先绘制基因组
circos(R=400, cir="hg18", W=4,   type="chr", print.chr.lab=TRUE, scale=TRUE);

# 绘制基因表达热图
circos(R=300, cir="hg18", W=100, mapping=gene.exp,  col.v=8,  type="heatmap2",
       cluster=TRUE, col.bar=TRUE, lwd=0.1, col="blue");


# 绘制CNV多行折线图
# 注意type为ml3,用阶梯形的多行折线图来展示cnv
# `?circos`详细查看参数
circos(R=220, cir="hg18", W=80,  mapping=cnv,   col.v=4,   type="ml3", B=FALSE, lwd=1, cutoff=0);

# 绘制pvalue折线图
# Correlation p values between expression and CNVs
circos(R=140, cir="hg18", W=80,  mapping=pvalue,  col.v=4,    type="l",   B=TRUE, lwd=1, col=colors[1]);

# 绘制融合基因连线
cols        <- rep(colors[7], nrow(TCGA.BC.fus));
col.i       <- which(TCGA.BC.fus[,1]==TCGA.BC.fus[,4]);
cols[col.i] <- colors[1];

col.i
# [1]  5 13 14 17
show_col(cols, ncol = 6)
Image

对来自同一个染色体的4对融合基因进行高亮(红色)展示:

Image
circos(R=130, cir="hg18", W=10,  mapping=TCGA.BC.fus, type="link2", lwd=2, col=cols);
Image
左下角还有样品聚类树呢

更多图片

查看更多可视化案例:

Image
1
Image
2
Image
3

参考教程:

  • https://bioconductor.org/packages/release/bioc/html/OmicCircos.html

OK,今天的分享到此为止,希望能对您有所帮助。

您的关注、点赞、在看、转发是对益站最大的鼓励和支持哈。

Image

联系站长

对本篇文章有疑问,可以在益站发消息留言,也欢迎各位童鞋扫码入(QQ)群

Image

收录于合集 #绘图专题
 109
上一篇R绘图技巧26| 热图聚类树中样品顺序修改 + 色块注释下一篇R绘图技巧28| 雷达/极坐标 + 箱线图 = 雷达箱线图?

Scan to Follow