我的编程空间,编程开发者的网络收藏夹
学习永远不晚

ComplexHeatmap绘制单个热图

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

ComplexHeatmap绘制单个热图

前言

ComplexHeatmap可以绘制很复杂的热图,能满足日常以及文章所需,本次先简单的介绍单个热图绘制的内容。

单个热图由热图主体和热图组件组成。其中主体可分为行和列;组件可以是标题、树状图、矩阵名称和热图注释,在主图的四周均可,且顺序可调整。

一 载入数据,R包

1.1 载入ComplexHeatmap包

#if (!requireNamespace("BiocManager", quietly = TRUE))
#    install.packages("BiocManager")
#BiocManager::install("ComplexHeatmap")
library(ComplexHeatmap)

1.2 载入数据

为更贴近生信使用场景,直接使用内置的基因表达数据


expr = readRDS(paste0(system.file(package = "ComplexHeatmap"), "/extdata/gene_expression.rds"))
#查看数据
str(expr)
expr[1:4,c(1:4,25:27)]

拿到一个新数据后,除了检查[1:4,1:4]外,也许还需要看看最后几列,另外还需要观察列名称的规律。

去除最后几列,或者只选取列名字包含cell的(TCGA数据处理中也会经常遇到)

mat = as.matrix(expr[, grep("cell", colnames(expr))])

1.3 绘制最简单的热图

Heatmap(mat)

可以看到有很多需要“美化”的地方,别急,一点点来。

二 热图修饰

2.1 颜色

1)连续型变量

可以使用circle::colorRamp2()函数来生成Heatmap()中的颜色映射函数,输入参数为分割位置以及分割点上的颜色。下例中,大于12的值都映射为红色,小于12的值映射为绿色;

library(circlize)
#c中的范围要根据实际情况设置
col_fun = colorRamp2(c(8, 12, 16), c("green", "white", "red"))
Heatmap(mat, name = "mat", col = col_fun)

2)分类型变量

更改分类变量的颜色,需要把所有分类的数字均进行赋值。

discrete_mat = matrix(sample(1:4, 100, replace = TRUE), 10, 10)
colors = structure(1:4, names = c("1", "2", "3", "4")) # black, red, green, blue
Heatmap(discrete_mat, name = "mat", col = colors,
    column_title = "a discrete numeric matrix")

更多颜色修改请参考官方文档,文末的参考资料的链接。

2.2 标题

1)设置行,列和图例的标题

Heatmap(mat, 
        name = "legend title", #图例title
        column_title = "I am a column title", #列title 
        row_title = "I am a row title",
        column_title_side = "bottom") #行title

2)设置标题的位置,颜色,字体,大小

Heatmap(mat, name = "mat", 
        row_title = "row title",
        row_title_rot = 0, #旋转方向
        column_title = "I am a big column title", 
        column_title_side = "bottom", #标题位置
        column_title_gp = gpar(fontsize = 20, fontface = "bold",col = "red")) #颜色,字体,大小

3)设置标题的背景

column_title_gp中的填充参数来设置标题的背景颜色

Heatmap(mat, name = "mat", 
        column_title = "I am a column title", 
        column_title_gp = gpar(fill = "red", col = "white", border = "blue"),
        )

2.3 聚类

聚类是热图可视化的关键组成部分,在ComplexHeatmap包中可以非常灵活的进行设置。

A:一般设置

cluster_rows/columns :是否进行聚类

show_column/row_dend :是否显示聚类树

column/row_dend_side :聚类图绘制的位置

column_dend_height/row_dend_widht :聚类树的高度 和 宽度

Heatmap(mat, name = "mat",</code><code>        cluster_columns = T,  </code><code>        cluster_rows = F, ## turn off row clustering</code><code>        show_column_dend = T, ## hide column dendrogram</code><code>        show_row_dend = F,</code><code>        column_dend_side = "top",  #dendrogram location</code><code>        column_dend_height = unit(4, "cm"))

注意:聚类树的高度 和 宽度有区别。

B:距离方法

可选计算距离的方式包括pearson, spearman以及kendall , 或者计算距离的自定义函数。

Heatmap(mat, name = "mat", clustering_distance_rows = "pearson",
    column_title = "pre-defined distance method (1 - pearson)")

自定义

Heatmap(mat, name = "mat", clustering_distance_rows = function(x, y) 1 - cor(x, y),
    column_title = "a function that calculates pairwise distance")

C:聚类方法

支持hclust()中的聚类方法。

Heatmap(mat, name = "mat", clustering_method_rows = "single")

D:聚类树的渲染

根据聚类结果将聚类树的枝设置不同的颜色

library(dendextend)</code><code>row_dend = as.dendrogram(hclust(dist(mat)))</code><code>row_dend = color_branches(row_dend, k = 4) # `color_branches()` returns a dendrogram object</code><code>Heatmap(mat, name = "mat", </code><code>        cluster_rows = row_dend,</code><code>        row_dend_width  = unit(4, "cm"))

2.4 设置行列顺序

通过row_order/column_order函数自定义其排序,为方便展示选择前30个基因。

mat <- mat[1:30,]
Heatmap(mat, name = "mat", 
          row_order = order(as.numeric(gsub("gene", "", rownames(mat)))), #将gene1替换为1,在排序
          column_order = sort(colnames(mat)),
          column_title = "reorder matrix")

注:此处将gene1,gene10 先替换掉gene(不去的话是按照ASCII码),然后按照数值排序。

参考资料:

https://github.com/jokergoo/ComplexHeatmap

https://jokergoo.github.io/ComplexHeatmap-reference/book/a-single-heatmap.html

以上就是ComplexHeatmap绘制单个热图的详细内容,更多关于ComplexHeatmap绘制单个热图的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

ComplexHeatmap绘制单个热图

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

怎么使用ComplexHeatmap绘制单个热图

这篇文章主要介绍“怎么使用ComplexHeatmap绘制单个热图”,在日常操作中,相信很多人在怎么使用ComplexHeatmap绘制单个热图问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”怎么使用Compl
2023-07-02

怎么使用R语言ComplexHeatmap绘制复杂热图heatmap

这篇“怎么使用R语言ComplexHeatmap绘制复杂热图heatmap”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“怎么
2023-07-02

使用Python绘制热图的库 pyHea

pyHeatMap 详细介绍这是一个生成热图的小程序,基于 Python 和 PIL 开发。程序截图:点击图热图安装:通过 pip 安装:pip install pyheatmap通过 easy_install 安装:easy_instal
2023-01-31

使用matplotlib绘制热图(heatmap)全过程

这篇文章主要介绍了使用matplotlib绘制热图(heatmap)全过程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2022-12-17

R语言如何绘制空间热力图

小编给大家分享一下R语言如何绘制空间热力图,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!先上图R语言的REmap包拥有非常强大的空间热力图以及空间迁移图功能,里面
2023-06-14

利用Matplotlib实现单画布绘制多个子图

这篇文章主要介绍了利用Matplotlib实现单画布绘制多个子图,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-07

手把手教你用python绘制热度图(heatmap)

我们在做诸如人群密集度等可视化的时候,可能会考虑使用热力图,在Python中能很方便地绘制热力图,下面这篇文章主要给大家介绍了关于用python绘制热度图(heatmap)的相关资料,需要的朋友可以参考下
2022-12-23

如何在Python中使用ECharts绘制热力图

如何在Python中使用ECharts绘制热力图热力图是一种基于颜色深浅来展示数据变化的可视化方式,广泛用于分析热点密度、趋势和相关性分析等场景。在Python中,我们可以使用ECharts库来绘制热力图,并通过具体的代码示例来演示其使用方
如何在Python中使用ECharts绘制热力图
2023-12-17

java怎么绘制简单图形

Java中绘制基本图形,可以使用Java类库中的Graphics类,此类位于java.awt包中。在我们自己的java程序文件中,要使用Graphics类就需要使用import java.awt.Graphics语句将Graphics类导入进来。Graphic
java怎么绘制简单图形
2021-09-18

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录