1.1 基础热图绘制

news2025/1/12 10:09:16

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/1067673.html

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

相关文章

Spring Cloud学习笔记【分布式请求链路跟踪-Sleuth】

文章目录 Spring Cloud Sleuth概述概述主要功能:Sleuth中的术语和相关概念官网 zipkin配置下载运行zipkin下载zipkin运行 demo配置服务提供者 lf-userpom.xmlapplication.ymlUserController 服务调用者 lf-authpom.xmlapplication.ymlAuthController 测试 Spring Cl…

mysql面试题24:如何写sql,能够有效的使用到复合索引?

该文章专注于面试,面试只要回答关键点即可,不需要对框架有非常深入的回答,如果你想应付面试,是足够了,抓住关键点 面试官:如何写sql,能够有效的使用到复合索引? 为了能够有效地使用到复合索引,需要考虑以下几点: 索引列顺序:复合索引的列顺序非常重要,应该将最频…

深入浅出,SpringBoot整合Quartz实现定时任务与Redis健康检测(二)

前言 在上一篇深入浅出,SpringBoot整合Quartz实现定时任务与Redis健康检测(一)_往事如烟隔多年的博客-CSDN博客 文章中对SpringBoot整合Quartz做了初步的介绍以及提供了一个基本的使用例子,因为实际各自的需求任务不尽相同因此并…

redis分布式秒杀锁

-- 获取锁标识,是否与当前线程一致? if(redis.call(get, KEYS[1]) ARGV[1]) then-- 一致,删除return redis.call(del, KEYS[1]) end -- 不一致,直接返回 return 0package com.platform.lock;public interface ILock {/*** 获取锁…

2.5 数字传输系统

笔记: 针对这一节的内容,我为您提供一个笔记的整理方法。将内容按重要性、逻辑关系进行组织,再进行简化。 ## 2.5 数字传输系统 ### 背景介绍: 1. **早期电话网**:市话局到用户采用双绞线电缆,长途干线采…

Ubuntu 20.04使用源码安装nginx 1.14.0

nginx安装及使用(详细版)是一篇参考博文。 http://nginx.org/download/可以选择下载源码的版本。 sudo wget http://nginx.org/download/nginx-1.14.0.tar.gz下载源代码。 sudo tar xzf nginx-1.14.0.tar.gz进行解压。 cd nginx-1.14.0进入到源代码…

ping使用

使用shell ping一个网段 #!/bin/shfor ib in $(seq 1 254); doip"192.168.1.$ib"(if ping -c3 "$ip" >> 1.txt; thenecho "$ip is alive"fi) &done wait在每次循环的最后,使用 & 将子 shell 放入后台执行&#xff0c…

怒刷LeetCode的第25天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一:闭合为环 第二题 题目来源 题目内容 解决方法 方法一:动态规划 方法二:组合数学 方法三:递归 方法四:数学公式 第三题 题目来源 题目内容 解决方法 …

ctfshow-web3(伪协议php://input的利用)

打开题目链接,存在文件包含函数 include 存在文件包含时直接使用PHP伪协议 先介绍一下一个常用的php伪协议: php://input(用于执行PHP代码) 这是一个只读信息流,当请求方式是post的,并且enctype不等于…

Flink---10、处理函数(基本处理函数、按键分区处理函数、窗口处理函数、应用案例TopN、侧输出流)

星光下的赶路人star的个人主页 我的敌手就是我自己,我要他美好到能使我满意的程度 文章目录 1、处理函数1.1 基本处理函数(ProcessFunction)1.1.1 处理函数的功能和使用1.1.2 ProcessFunction解析1.1.3 处理函数的分类 1.2 按键分区处理函数&…

Charles:移动端抓包 / windows客户端 iOS手机

一、背景描述 1.1、本文需求:移动端进行抓包调试 1.2、理解Charles可以做什么 Charles是一款跨平台的网络代理软件,可以用于捕获和分析网络流量,对HTTP、HTTPS、HTTP/2等协议进行调试和监控。使用Charles可以帮助开发人员进行Web开发、调试…

【MySQL】Linux 中 MySQL 环境的安装与卸载

文章目录 Linux 中 MySQL 环境的卸载Linux 中 MySQL 环境的安装 Linux 中 MySQL 环境的卸载 在安装 MySQL 前,我们需要先将系统中以前的环境给卸载掉。 1、查看以前系统中安装的 MySQL rpm -qa | grep mysql2、卸载这些 MySQL rpm -qa | grep mysql | args yum …

【Unity】RenderFeature笔记

【Unity】RenderFeature笔记 RenderFeature是在urp中添加的额外渲染pass,并可以将这个pass插入到渲染列队中的任意位置。内置渲染管线中Graphics 的功能需要在RenderFeature里实现,常见的如DrawMesh和Blit ​ 可以实现的效果包括但不限于 后处理,可以编写…

ruoyi-cloud新增模块示例(亲自操作,可行)

1.在ruoyi-modules模块下新建模块&#xff08;ruoyi-search&#xff09; 2.重命名模块的名称 3.在ruoyi-modules添加新模块依赖 4.复制ruoyi-system模块的pom文件&#xff0c;并进行修改 <?xml version"1.0" encoding"UTF-8"?> <project xmlns…

JetPack系列:001-JetPack概要介绍

文章目录 1. 概念介绍2. 主要内容2.1 框架库2.2 UI界面库 3. 核心思想4. 内容总结 本章回是一起Talk AndroidJetpack吧专栏的第一章回&#xff0c;本章回中主要介绍JetPack的基本概念和编程思想&#xff0c;同时也会介绍它的基础知识。闲话休提&#xff0c;请我们一起Talk Andr…

Mysql——创建数据库,对表的创建及字段定义、数据录入、字段增加及删除、重命名表。

一.创建数据库 create database db_classics default charsetutf8mb4;//创建数据库 use db_classics;//使用该数据库二.对表的创建及字段定义 create table if not exists t_hero ( id int primary key auto_increment, Name varchar(100) not null unique, Nickname varchar(1…

TDengine OSS 与 qStudio 实现无缝协同,革新数据分析和管理方式

在数字化转型如火如荼的当下&#xff0c;海量爆发的时序数据处理成为转型成功的关键因素之一。为了帮助社区用户更好地进行数据分析和管理&#xff0c;丰富可视化解决方案的多样性&#xff0c;我们将开源的时序数据库&#xff08;Time Series Database&#xff09; TDengine OS…

【Zookeeper专题】Zookeeper经典应用场景实战(一)

目录 前置知识课程内容一、Zookeeper Java客户端实战1.1 Zookeeper 原生Java客户端使用1.2 Curator开源客户端使用快速开始使用示例 二、Zookeeper在分布式命名服务中的实战2.1 分布式API目录2.2 分布式节点的命名2.3 分布式的ID生成器 三、zookeeper实现分布式队列3.1 设计思路…

SpringBoot集成MyBatis-Plus实现增删改查

背景 因为学习工具的时候经常需要用到jar包&#xff0c;需要增删查改接口&#xff0c;所以参考文章实现了基于mybatis-plus的增删查改接口。 参考文章&#xff1a;第二十二节:SpringBoot集成MyBatis-Plus实现增删改查 原文中的git地址不存在&#xff0c;本文内容是原文代码修…

基于Java的源代码共享平台设计与实现(源码+lw+ppt+部署文档+视频讲解等)

文章目录 前言系统功能具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域…