ComplexHeatmap热图专栏 | 1.1 基础热图绘制

news2025/1/11 5:46:44

1 写在前面

最近在作图,一直在寻找《小杜的生信笔记》前期发表的代码。众所周知,小杜的教程基本都是平时自己用到的绘图教程,也是自己一个分享和总结。

自己在后期作图的时候,也会去寻找自己前期的教程作为基础,进行不断的修改。没错,自己的教程,在后期作图的时候也会不断的修改。

2 热图

热图作为组学分析中最最最常见的图形之一。我们前提也推出好几个绘制热图的教程,如ComplexHeatmap绘制Pathway热图、热图绘制篇 | 高颜值热图总汇、如何绘制带有“正负号”标记的热图?、Pheatmap包绘制热图教程、热图添加指定的基因标记(代码重现)、ComplexHeatmap热图绘制|指定基因在热图中标记。那么我们也推出相关ComplexHeatmap包绘制热图的教程(其实也不算是教程,作者已经给出详细的帮助文档),也算是再次系统性的学习ComplexHeatmap包绘制热图。


在此也感谢ComplexHeatmap包开发作者Zuguang Gu

Citation:

  1. Zuguang Gu, et al., Complex heatmaps reveal patterns and correlations in multidimensional genomic data, Bioinformatics, 2016.
  2. Zuguang Gu. Complex Heatmap Visualization, iMeta, 2022.

本教程详细内容可以点击

安装

library(devtools)
install_github("jokergoo/ComplexHeatmap")

1.1 热图的设计

单个热图由热图主体和热图组件组成。热图主体可以按行和列进行分割。热图组件包括标题、树状图、行/列名称/标签和热图注释,它们被放置在堆主体的四个侧面。根据所述热图主体对所述热图组件进行重新排序或拆分。

2 A Single Heatmap

单个热图是数据可视化最常用的方法。尽管 ComplexHeat map 包的“闪光点”在于它可以并行地可视化一个热图列表,但是,作为热图列表的基本单元,良好地配置单个热图仍然非常重要。

随机生成一个数据矩阵:

set.seed(123)
nr1 = 4; nr2 = 8; nr3 = 6; nr = nr1 + nr2 + nr3
nc1 = 6; nc2 = 8; nc3 = 10; nc = nc1 + nc2 + nc3
mat = cbind(rbind(matrix(rnorm(nr1*nc1, mean = 1,   sd = 0.5), nr = nr1),
          matrix(rnorm(nr2*nc1, mean = 0,   sd = 0.5), nr = nr2),
          matrix(rnorm(nr3*nc1, mean = 0,   sd = 0.5), nr = nr3)),
    rbind(matrix(rnorm(nr1*nc2, mean = 0,   sd = 0.5), nr = nr1),
          matrix(rnorm(nr2*nc2, mean = 1,   sd = 0.5), nr = nr2),
          matrix(rnorm(nr3*nc2, mean = 0,   sd = 0.5), nr = nr3)),
    rbind(matrix(rnorm(nr1*nc3, mean = 0.5, sd = 0.5), nr = nr1),
          matrix(rnorm(nr2*nc3, mean = 0.5, sd = 0.5), nr = nr2),
          matrix(rnorm(nr3*nc3, mean = 1,   sd = 0.5), nr = nr3))
   )
mat = mat[sample(nr, nr), sample(nc, nc)] # random shuffle rows and columns
rownames(mat) = paste0("row", seq_len(nr))
colnames(mat) = paste0("column", seq_len(nc))
head(mat)

> head(mat)
         column1     column2   column3     column4    column5     column6    column7     column8    column9   column10  column11    column12   column13
row1  0.90474160 -0.35229823 0.5016096  1.26769942  0.8251229  0.16215217 -0.2869867  0.68032622 -0.1629658  0.8254537 0.7821773 -0.49625358 -0.0895258
row2  0.90882972  0.79157121 1.0726316  0.01299521  0.1391978  0.46833693  1.2814948  0.38998256 -0.3473535  1.3508922 1.1183375  2.05005447  1.3770269
row3  0.28074668  0.02987497 0.7052595  1.21514235  0.1747267  0.20949120 -0.6423579 -0.31395304  0.2175907 -0.2973086 0.4322058 -0.25803192 -0.5686518
row4  0.02729558  0.75810969 0.5333504 -0.49637424 -0.5261114  0.56724357  0.8127096 -0.01427338  1.0844780  0.2426662 0.8783874  1.38452112  0.8376570
row5 -0.32552445  1.03264652 1.1249573  0.66695147  0.4490584  1.04236865  2.6205200  0.75823530 -0.2333277  1.3439584 0.8517620  0.85980233  1.9986067
row6  0.58403269 -0.47373731 0.5452483  0.86824798 -0.1976372 -0.03565404 -0.3203530  1.05534136  0.7771690  0.4594983 0.2550648 -0.02778098 -0.2112484

我们可以替换成绘制热图的数据即可。


下面的命令包含 Heatmap()函数的最小参数,该函数将矩阵可视化为具有默认设置的热图。与其他热图工具非常相似,它绘制树状图、行/列名称和热图图例。默认的颜色模式是“蓝-白-红”,它映射到矩阵中的最小均值-最大值。图例的标题使用内部索引号分配。

Heatmap(mat)


默认情况下,图例的标题取自热图的“名称”。每个热图都有一个名字,就像热图的唯一标识符一样,。在后面的章节中,你会发现热图名称是用来设置“主热图”,并用于装饰热图。如果未分配该名称,则将一个内部名称以matrix_%d的形式分配给热图。在本章的下面的例子中,我们给热图命名垫(在下一个图中你会看到图例标题的变化)。

2.1 更改颜色

circlize::ColorRamp2()函数在Heatmap()中生成颜色映射函数。ColorRamp2()的两个参数是中断值的向量和相应颜色的向量。ColorRamp2()通过LAB颜色空间在每个区间内线性插值颜色。此外,使用color Ramp2()还可以帮助生成带有适当刻度标记的图例。

在下面的例子中,-2和2之间的值被线性插值以获得相应的颜色,大于2的值都映射为红色,小于 -2的值都映射为绿色。

library(circlize)
col_fun = colorRamp2(c(-2, 0, 2), c("green", "white", "red"))
col_fun(seq(-3, 3))
[1] "#00FF00FF" "#00FF00FF" "#B1FF9AFF" "#FFFFFFFF" "#FF9E81FF" "#FF0000FF" "#FF0000FF"

##'@2.1 更改颜色
library(circlize)
col_fun = colorRamp2(c(-2, 0, 2), c("green", "white", "red"))
col_fun(seq(-3, 3))

## 绘图
Heatmap(mat, name = "mat", col = col_fun)

2.2 热图标题

Heatmap(mat, name = "mat", col = col_fun, 
        ## 标题的修改
        column_title = "a matrix with outliers")

2.3 不使用colorRamp2()更改颜色

颜色设置:

f1 = colorRamp2(seq(min(mat), max(mat), length = 3), c("blue", "#EEEEEE", "red"))
f2 = colorRamp2(seq(min(mat), max(mat), length = 3), c("blue", "#EEEEEE", "red"), space = "RGB")
Heatmap(mat, name = "mat1", col = f1, column_title = "LAB color space")
Heatmap(mat, name = "mat2", col = f2, column_title = "RGB color space")

2.4 添加热图边框颜色

2.4.1 设置热图主体全局边界

热图边框的颜色可以通过border/border_gprect_gp参数设置。border/border_gp控制热图主体的全局边界,rect_gp控制热图中网格/单元格的边界。

##'@2.4  添加热图边框颜色
Heatmap(mat, name = "mat", 
        ##设置颜色
        border_gp = gpar(col = "black", ## 设置颜色
                         lty = 2),  ## lty = 2设置虚线距离
        column_title = "set heatmap borders")

2.4.2 设置热图网格/单元格的边界

Heatmap(mat, name = "mat", rect_gp = gpar(col = "white", ## 设置颜色
                                          lwd = 2),
        column_title = "set cell borders")


往期文章:

1. 复现SCI文章系列专栏

2. 《生信知识库订阅须知》,同步更新,易于搜索与管理。

3. 最全WGCNA教程(替换数据即可出全部结果与图形)

  • WGCNA分析 | 全流程分析代码 | 代码一

  • WGCNA分析 | 全流程分析代码 | 代码二

  • WGCNA分析 | 全流程代码分享 | 代码三


4. 精美图形绘制教程

  • 精美图形绘制教程

5. 转录组分析教程

转录组上游分析教程[零基础]


小杜的生信筆記,主要发表或收录生物信息学的教程,以及基于R的分析和可视化(包括数据分析,图形绘制等);分享感兴趣的文献和学习资料!!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1068054.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

吃鸡达人必备!超实用干货激爽分享!

大家好!作为一名专业吃鸡行家,今天我将为大家分享一些关于提高游戏战斗力和分享顶级游戏作战干货的秘诀,还有一些方便吃鸡作图、装备皮肤库存展示和查询的技巧! 首先,让我们来介绍一些吃鸡作图工具推荐。无论是新手还是…

卷积神经网络的发展历史-VGG

VGG的产生 2014 年,Simonyan和Zisserman提出了VGG系列模型(包括VGG-11/VGG-13/VGG-16/VGG-19),并在当年的ImageNet Challenge上作为分类任务第二名、定位(Localization)任务第一名的基础网络出现。 VGG的…

[数据结构]迷宫问题求解

目录 数据结构——迷宫问题求解&#xff1a;&#xff1a; 1.迷宫问题 2.迷宫最短路径问题 数据结构——迷宫问题求解&#xff1a;&#xff1a; 1.迷宫问题 #include <stdio.h> #include <string.h> #include <stdlib.h> #include <assert.h> #includ…

mysql面试题26:MySQL中什么是MVCC,它的底层原理是什么

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:什么是MVCC,它的底层原理是什么? MVCC(Multi-Version Concurrency Control)是一种并发控制机制,用于在数据库中实现并发事务的隔离性和一致性…

互联网Java工程师面试题·Redis 篇·第二弹

目录 16、Redis 集群方案什么情况下会导致整个集群不可用&#xff1f; 17、Redis 支持的 Java 客户端都有哪些&#xff1f;官方推荐用哪个&#xff1f; 18、Jedis 与 Redisson 对比有什么优缺点&#xff1f; 19、Redis 如何设置密码及验证密码&#xff1f; 20、说说 Redis…

卷积神经网络的发展历史-ResNet

ResNet的产生 2015 年&#xff0c;Kaiming He 提出了ResNet&#xff08;拿到了 2016 年 CVPR Best Paper Award&#xff09;&#xff0c;不仅解决了神经网络中的退化问题还在同年的ILSVRC和COCO 竞赛横扫竞争对手&#xff0c;分别拿下分类、定位、检测、分割任务的第一名。 R…

山东省赛二阶段第一部分解题思路

提交攻击者的IP地址 192.168.1.7 这个直接awk过滤一下ip次数&#xff0c;这个ip多得离谱&#xff0c;在日志里面也发现了它的恶意行为&#xff0c;后门&#xff0c;反弹shell 识别攻击者使用的操作系统 Linux 找出攻击者资产收集所使用的平台 shodan 提交攻击者目…

给 Linux0.11 添加网络通信功能 (Day3: 完成 MIT6.S081 最终实验 网卡驱动(1. 安装工具链和依赖))

url: https://pdos.csail.mit.edu/6.S081/2020/labs/net.html 首先看 tools章节&#xff1a;https://pdos.csail.mit.edu/6.S081/2020/tools.html 浏览了一下&#xff0c;就是要我们安装依赖 执行以下命令 sudo apt-get install git build-essential gdb-multiarch qemu-syst…

CentOS Stream9 安装远程桌面服务 Xrdp

1. 安装 XRDP 若服务器本身没有桌面则首先需要安装本地桌面&#xff1a; yum -y groups install "GNOME Desktop" startx配置源&#xff1a; dnf install epel-release安装 xrdp dnf install xrdp 2. 配置 Xrdp Xrdp 配置文件位于 /etc/xrdp 目录中。对于常规 X…

学信息系统项目管理师第4版系列20_风险管理

1. 针对不确定性的应对方法 1.1. 【高23上选58】 1.2. 收集信息 1.2.1. 可以对信息收集和分析工作进行规划&#xff0c;以便发现更多信息&#xff08;如进行研究、争取专家参与或进行市场分析&#xff09;来减少不确定性 1.3. 为多种结果做好准备 1.3.1. 制定可用的解决方…

【b站韩顺平 快速学Java课】Java的JDK8(包括公共JRE8)安装教程 总结

最近开始学Java&#xff0c;如果是程序员的话要使用Java——需要安装JDK。 不同操作系统&#xff08;Win/Linux/Mac&#xff09;——需要安装不同的JDK。 1.JDK安装官网链接&#xff1a; Java Downloads | Oracle 我的电脑是win x64,以下笔记总结就暂且以本人电脑操作系统版本…

Python编程:创建图像浏览器应用程序

介绍&#xff1a; 图像浏览器应用程序是一种非常常见和实用的工具。它们使用户能够轻松地浏览和管理计算机中的图像文件。本文将介绍如何使用Python编程语言和wxPython库创建一个简单的图像浏览器应用程序。我们将学习如何利用Python的os模块进行文件和文件夹操作&#xff0c;以…

2023去水印小程序源码修复版-前端后端内置接口+第三方接口

去水印小程序源码&#xff0c;前端后端&#xff0c;内置接口第三方接口&#xff0c;修复数据库账号密码错误问题&#xff0c;内置接口支持替换第三方接口&#xff0c;看了一下文件挺全的&#xff0c;可以添加流量主代码&#xff0c;搭建需要准备一台服务器&#xff0c;备案域名…

顺序表存储一元多项式,并实现两个多项式相加运算(C++,无序输入)

采用顺序表存储一元多项式&#xff0c;并实现两个多项式相加运算&#xff0c;要求&#xff1a; &#xff08;1&#xff09;创建存储多项式的有序表&#xff08;按无序输入&#xff09;ha和hb&#xff1b; &#xff08;2&#xff09;求ha和hb相加产生多项式hc。 &#xff08;…

入侵防御系统(IPS)网络安全设备介绍

入侵防御系统&#xff08;IPS&#xff09;网络安全设备介绍 1. IPS设备基础 IPS定义 IPS&#xff08;Intrusion Prevention System&#xff09;是一种网络安全设备或系统&#xff0c;用于监视、检测和阻止网络上的入侵尝试和恶意活动。它是网络安全架构中的重要组成部分&…

基于虚拟同步发电机的孤岛逆变器控制策略(孤岛VSG)(Simulink仿真实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

屏幕分辨率:PC / 手机 屏幕常见分辨率,前端如何适配分辨率

一、常见的PC屏幕分辨率 序号水平像素点数和垂直像素点数也被称为常见显示器11366 768720p 或 HD Ready常见于笔记本电脑和低端桌面显示器21920 10801080p 或 Full HD / 全高清高端笔记本电脑和中高档台式机32560 14402K 分辨率常见于高端笔记本电脑和高端台式机43840 216…

Linux读写锁的容易犯的问题

Linux读写锁的容易犯的问题 读写锁是互斥锁之外的另一种用于多线程之间同步的一种方式。 多线程对于一个共享变量的读操作是安全的&#xff0c; 而写操作是不安全的。如果在一个读很多而写很少的场景之下&#xff0c;那么使用互斥锁将会阻碍大量的线程安全的读操作的进行。在…

机器学习算法基础--KNN分类算法

文章目录 1.KNN算法原理介绍2.KNN分类决策原则3.KNN度量距离介绍3.1.闵可夫斯基距离3.2.曼哈顿距离3.3.欧式距离 4.KNN分类算法实现5.KNN分类算法效果6.参考文章与致谢 1.KNN算法原理介绍 KNN&#xff08;K-Nearest Neighbor&#xff09;工作原理&#xff1a; 在一个存在标签的…

Stable Diffusion 图片换脸插件Roop保姆教程 附错误解决办法和API使用

换脸技术已经不是新鲜事物,但如何实现简单、快速、高效的换脸操作呢?Roop插件正是为解决这一问题而生的。 sd-webui-roop 插件适用于已经本地部署了SD的用户。相较于传统的换脸技术,Roop插件几乎不需要训练,只需一张照片,即可在10秒内完成换脸。 但是要注意到是必须注意…