Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >肿瘤生信科研:绘制突变景观图(mutation landscape)

肿瘤生信科研:绘制突变景观图(mutation landscape)

作者头像
简说基因
发布于 2024-03-01 09:29:42
发布于 2024-03-01 09:29:42
57300
代码可运行
举报
文章被收录于专栏:简说基因简说基因
运行总次数:0
代码可运行

肿瘤生信科研经常会画突变的景观图,或者叫瀑布图,用 maftools 包可以实现简单的 Landscape 图,但是当图形比较复杂时,maftools 就不能胜任了,可以用 ComplexHeatmap 包来画。

实际上,Landscape 图是热图的一种:图形由许多方块组成,根据突变类型的不同,方块被渲染成不同的颜色。

本文旨在抛砖引玉,更全面地学习 ComplexHeatmap 画景观图的方法,可以参考官方文档:https://jokergoo.github.io/ComplexHeatmap-reference/book/oncoprint.html

安装

安装稳定版本(建议):

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
if (!require("BiocManager", quietly = TRUE))
    install.packages("BiocManager")

BiocManager::install("ComplexHeatmap")

或者安装开发版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(devtools)
install_github("jokergoo/ComplexHeatmap")

绘图

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
library(ComplexHeatmap)

加载包自带的数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
mat = read.table(system.file("extdata", package = "ComplexHeatmap", 
    "tcga_lung_adenocarcinoma_provisional_ras_raf_mek_jnk_signalling.txt"), 
    header = TRUE, stringsAsFactors = FALSE, sep = "\t")
mat[is.na(mat)] = ""
rownames(mat) = mat[, 1]
mat = mat[, -1]
mat=  mat[, -ncol(mat)]
mat = t(as.matrix(mat))
mat[1:3, 1:3]
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
##      TCGA-05-4384-01 TCGA-05-4390-01 TCGA-05-4425-01
## KRAS "  "            "MUT;"          "  "           
## HRAS "  "            "  "            "  "           
## BRAF "  "            "  "            "  "

原数据行是样本,列是基因,需要进行转置,变成行为基因,列为样本。

数据集中有 3 种变异:HOMDEL、AMP 和 MUT,先定义每种变异在热图中的颜色,再定义一个 alter_fun 函数,用以指明突变的形状,高度等。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
col = c("HOMDEL" = "blue", "AMP" = "red", "MUT" = "#008000")

# just for demonstration
alter_fun = list(
    background = alter_graphic("rect", fill = "#CCCCCC"),   
    HOMDEL = alter_graphic("rect", fill = col["HOMDEL"]),
    AMP = alter_graphic("rect", fill = col["AMP"]),
    MUT = alter_graphic("rect", height = 0.33, fill = col["MUT"])
)

现在画景观图。我们将 column_title 和 heatmap_legend_param 保存为变量,因为它们在以下代码块中多次使用。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
column_title = "OncoPrint for TCGA Lung Adenocarcinoma, genes in Ras Raf MEK JNK signalling"
heatmap_legend_param = list(title = "Alternations", at = c("HOMDEL", "AMP", "MUT"), 
        labels = c("Deep deletion", "Amplification", "Mutation"))
oncoPrint(mat,
    alter_fun = alter_fun, col = col, 
    column_title = column_title, heatmap_legend_param = heatmap_legend_param)

可以看到,一个基础版的景观图就生成了,横坐标是样本,纵坐标上是基因,并且基因和样本是自动重新排序的(先对基因按突变频率从高到低排序,然后对样本进行排序)。

删除空行和空列

默认情况下,如果样本或基因没有突变,它们仍将保留在热图中,但我们可以将 remove_empty_columns 和 remove_empty_rows 设置为 TRUE 来删除它们:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
oncoPrint(mat,
    alter_fun = alter_fun, col = col, 
    remove_empty_columns = TRUE, remove_empty_rows = TRUE,
    column_title = column_title, heatmap_legend_param = heatmap_legend_param)

重新排序行和列

可以通过两个顺序向量:row_order 和 column_order 指定行和列的顺序。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
sample_order = scan(paste0(system.file("extdata", package = "ComplexHeatmap"), 
    "/sample_order.txt"), what = "character")
oncoPrint(mat,
    alter_fun = alter_fun, col = col, 
    row_order = 1:nrow(mat), column_order = sample_order,
    remove_empty_columns = TRUE, remove_empty_rows = TRUE,
    column_title = column_title, heatmap_legend_param = heatmap_legend_param)

景观图注释

在景观图的顶部和右侧,有显示每个基因或每个样本的不同变异数量的条形图,在景观图的左侧是显示每个基因具有变异的样本百分比的文本注释。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
oncoPrint(mat,
    alter_fun = alter_fun, col = col, 
    top_annotation = HeatmapAnnotation(
        column_barplot = anno_oncoprint_barplot("MUT", border = TRUE, # only MUT
            height = unit(4, "cm"))
    ),
    right_annotation = rowAnnotation(
        row_barplot = anno_oncoprint_barplot(c("AMP", "HOMDEL"),  # only AMP and HOMDEL
            border = TRUE, height = unit(4, "cm"), 
            axis_param = list(side = "bottom", labels_rot = 90))
    ),
    remove_empty_columns = TRUE, remove_empty_rows = TRUE,
    column_title = column_title, heatmap_legend_param = heatmap_legend_param)

默认情况下,条形图注释显示频率。通过在 anno_oncoprint_barplot() 中设置 show_fraction = TRUE ,可将这些值更改为分数:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
oncoPrint(mat,
    alter_fun = alter_fun, col = col, 
    top_annotation = HeatmapAnnotation(
        column_barplot = anno_oncoprint_barplot(show_fraction = TRUE)
    ),
    right_annotation = rowAnnotation(
        row_barplot = anno_oncoprint_barplot(show_fraction = TRUE)
    ),
    remove_empty_columns = TRUE, remove_empty_rows = TRUE,
    column_title = column_title, heatmap_legend_param = heatmap_legend_param)

百分比值和行名称在内部构造为文本注释。可以设置 show_pct 和 show_row_names 来打开或关闭它们。pct_side 和 row_names_side 控制放置它们的边。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
oncoPrint(mat,
    alter_fun = alter_fun, col = col, 
    remove_empty_columns = TRUE, remove_empty_rows = TRUE,
    pct_side = "right", row_names_side = "left",
    column_title = column_title, heatmap_legend_param = heatmap_legend_param)

景观图的条形图注释本质上是普通注释,可以在 HeatmapAnnotation() 或 rowAnnotation() 中添加更多注释:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
oncoPrint(mat,
    alter_fun = alter_fun, col = col, 
    remove_empty_columns = TRUE, remove_empty_rows = TRUE,
    top_annotation = HeatmapAnnotation(cbar = anno_oncoprint_barplot(),
        foo1 = 1:172,
        bar1 = anno_points(1:172)
    ),
    left_annotation = rowAnnotation(foo2 = 1:26),
    right_annotation = rowAnnotation(bar2 = anno_barplot(1:26)),
    column_title = column_title, heatmap_legend_param = heatmap_legend_param)

实战

最后,用自有数据绘图,效果如下。除了颜色需要再做一些调整之外,整体效果还行吧。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-02-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 简说基因 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
ComplexHeatmap 绘制全基因组突变景观图
ComplexHeatmap R包是Zuguang Gu编写的,也是现在文章中利用的较多的R包。这个包能实现的功能很强大,今天给大家介绍一下利用ComplexHeatmap R包中的oncoprint绘制突变景观图。
作图丫
2022/03/29
1.1K0
ComplexHeatmap 绘制全基因组突变景观图
ComplexHeatmap|根据excel表绘制突变景观图(oncoplot)
https://github.com/jokergoo/ComplexHeatmap
生信补给站
2020/08/05
2.2K1
ComplexHeatmap|根据excel表绘制突变景观图(oncoplot)
生信代码:绘制基因组突变全景图
对于基因组突变全景图相信大家并不陌生,它是基因组学突变数据最基本的可视化展示方法之一。一张漂亮的,高大上的基因突变全景图不仅能展示出丰富的信息,还能为你的文章增色不少,其绘制方法也多种多样。今天我们则来看看最常用的两个包maftools和ComplexHeatmap在绘制基因组突变全景图上的异同。首先让我们来简单的了解下这两个包:
科研菌
2021/02/19
6.5K0
生信代码:绘制基因组突变全景图
TCGA|根据somatic mutation绘制突变景观图(oncoplot)和基因词云
使用 XENA下载的TCGA-LAML.mutect2_snv.tsv文件绘制基因词云和突变景观图。
生信补给站
2020/10/29
3K0
TCGA|根据somatic mutation绘制突变景观图(oncoplot)和基因词云
R语言复杂热图的绘制
大家对热图应该都不陌生,但是混合的复杂热图在我们的应用中并不是太多见。今天给大家介绍一个绘制复杂热图的R包ComplexHeatmap。
一粒沙
2019/07/31
3.1K0
用 ComplexHeatmap 包绘制复杂热图
在 ComplexHeatmap 中单个热图由热图主体和热图组件组成。热图主体可按行或列进行拆分。热图组件包括标题,进化树,矩阵名称和热图注释,可分别放置于热图主体的四个侧面上,这些组件也可根据热图主体的顺序进行重新排序或拆分。
生信菜鸟团
2021/01/18
7.5K0
用 ComplexHeatmap 包绘制复杂热图
跟SCI学heatmap|文章中常见复杂热图的绘制方式(含代码),干货较多,建议耐心一下
拿到一个新数据后,除了检查[1:4,1:4]外,也许还需要看看最后几列,另外还需要观察列名称的规律。
生信补给站
2022/04/13
8K0
跟SCI学heatmap|文章中常见复杂热图的绘制方式(含代码),干货较多,建议耐心一下
ComplexHeatmap包更新支持pheatmap转换
pheatmap是热图中使用频率比较高一个R包,ComplexHeatmap:用于绘制、注释和排列复杂热图。现在ComplexHeatmap 迎来新版本升级,支持pheatmap 参数转换。
生信菜鸟团
2020/05/18
2.5K0
R绘制甲基化和表达谱联合分析热图
随着时代的发展,单一研究转录组、蛋白代谢、甲基化等已经难以满足研究者越来越高的研究期望,大家更多地期望联合多种数据进行多组学联合分析。那么这时候,一种好的展示结果的方式无疑会为发表高分文章增光添彩。
生信交流平台
2020/08/06
3.8K1
R绘制甲基化和表达谱联合分析热图
scRNA分析| 和SCI学 定制化聚类点图(Dotplot ),含二行代码出图方式
单细胞常见的可视化方式有DimPlot,FeaturePlot ,DotPlot ,VlnPlot 和 DoHeatmap集中 ,在Seurat中均可以实现,但文献中的图大多会精美很多。之前 scRNA复现|所见即所得,和Cell学umap,plot1cell完成惊艳的细胞注释umap图介绍了一种绘制惊艳umap图的方式;在跟SCI学umap图| ggplot2 绘制umap图,坐标位置 ,颜色 ,大小还不是你说了算 介绍过DimPlot的一些调整方法;在 scRNA分析 | 定制 美化FeaturePlot 图,你需要的都在这介绍了DotPlot的美化方式。
生信补给站
2023/08/25
11.4K2
scRNA分析| 和SCI学 定制化聚类点图(Dotplot ),含二行代码出图方式
关于我只有基因和变异类型,还想做oncoplot(瀑布图)这件事!
oncoplot (瀑布图)经常出现在肿瘤研究中的Fig1 ,可以展示多种变异类型的全景图。
生信补给站
2022/11/11
1.7K0
关于我只有基因和变异类型,还想做oncoplot(瀑布图)这件事!
EnrichedHeatmap--对富集结果进行热图可视化!
富集热图是一种特殊类型的热图,可将特定目标区域上基因组信号的富集可视化。 例如可以在转录起始位点富集组蛋白修饰。
作图丫
2022/03/29
2K0
EnrichedHeatmap--对富集结果进行热图可视化!
NC单细胞文章复现(三):复杂热图
我们这次直接拿GSE118390上已经normalized 的数据进行下游分析。首先我们先看看文献的这张复杂热图,哈哈,这张热图画得真是好看。左边是不同的markers基因对应的细胞类型,上边是6个TNBC病人总共1189个细胞,cycling指的是处于细胞分裂期的样本,下边还有1189个细胞对应的是CD45阳性还是CD阴性的。代码作者都已经有提供,但是如果按照作者的代码跑,仍然会出现error,我把代码一些参数修改了一下并进行翻译,再结合文献的描述,跟大家一起学习。我们看看怎么画呗。
生信技能树jimmy
2021/07/02
3.2K2
NC单细胞文章复现(三):复杂热图
一文详解如何用 R 语言绘制热图
AI 研习社按:作为目前最常见的一种可视化手段,热图因其丰富的色彩变化和生动饱满的信息表达被广泛应用于各种大数据分析场景。同时,专用于大数据统计分析、绘图和可视化等场景的 R 语言,在可视化方面也提供了一系列功能强大、覆盖全面的函数库和工具包。 因此,对从业者而言,用 R 语言绘制热图就成了一项最通用的必备技能。本文将以 R 语言为基础,详细介绍热图绘制中遇到的各种问题和注意事项。原文作者 taoyan,原载于作者个人博客,AI 研习社获授权。 简介 本文将绘制静态与交互式热图,需要使用到以下R包和函数
AI研习社
2018/03/19
3.8K0
一文详解如何用 R 语言绘制热图
我是如何还原NC中的美图的
上个月我们分享了基于多组学数据识别关键癌症驱动基因的超实用工具Moonlight,不知道大家是否有注意到传说中“别人家的图”。
作图丫
2022/03/29
1.3K0
我是如何还原NC中的美图的
数据分析:基因突变瀑布图统计以及可视化
生信学习者
2024/11/19
1000
数据分析:基因突变瀑布图统计以及可视化
CMap数据库学习及结果可视化
CMap是一个生物信息学数据库和工具,旨在通过比较基因表达谱来揭示药物、基因和疾病之间的潜在关联。CMap数据库主要用于寻找药物、化合物和生物过程之间的关系,并用于药物重定位(drug repurposing)和疾病机制研究。
凑齐六个字吧
2024/08/29
7310
CMap数据库学习及结果可视化
超详细的R语言热图绘制之complexheatmap:01
本书是对ComplexeHeatmap包的中文翻译(1-6章),部分内容根据自己的理解有适当的改动,但总体不影响原文。如有不明之处,以原文为准。原文请见:https://jokergoo.github.io/ComplexHeatmap-reference/book/
医学和生信笔记
2022/05/30
4.4K0
scRNA|ComplexHeatmap自定义单细胞转录组celltype-level 热图可视化
使用之前注释过的sce.anno.RData数据 ,后台回复 anno 即可获取
生信补给站
2023/09/26
1.9K1
scRNA|ComplexHeatmap自定义单细胞转录组celltype-level 热图可视化
我以为热图只能画数值型数据,万万没想到...
今天在群里看到一个非常漂亮的热图,我以为是什么奇怪的新R包画的,转了一圈发现原来还是大名鼎鼎的ComplexHeatmap丫。今天的代码都是在作者写的书基础上探索学习的,书在:https://jokergoo.github.io/ComplexHeatmap-reference/book/
科研菌
2021/02/19
1.9K0
我以为热图只能画数值型数据,万万没想到...
推荐阅读
相关推荐
ComplexHeatmap 绘制全基因组突变景观图
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验