无热图不组学!高阶文献热图R语言绘制小专场拿捏

news2024/11/25 23:14:35

一、概述

近在阅读近五年的一区高分的机器学习文献,其中有一种图出现频率特别高——热图。《Machine Learning and the Future of Cardiovascular Care: JACC State-of-the-Art Review》 image 《Comparison of Machine Learning Methods for Predicting Outcomes After In-Hospital Cardiac Arrest》 image image

1. 什么是热图(Heatmap)?

热图(Heatmap)是一种常见的数据可视化技术,通常用于展示高维数据的结构、相互关系,以及在不同条件或时间点下的变化等信息。热图的主要特点是使用颜色来表示数据的大小或相对大小,能够有效地展示大量的数据,并帮助用户快速发现数据中的规律和趋势。

热图(Heatmap)通常由两个坐标轴组成,一个表示样本或实验条件,另一个表示变量或特征。数据通常以矩阵的形式呈现,每个单元格的颜色代表该位置上的数据值。不同颜色通常代表不同的数值范围,例如红色可以表示高值,蓝色可以表示低值。

2. 热图的应用?

  1. 基因表达谱研究:热图可以用来展示基因在不同样本中的表达水平,从而帮助研究人员发现基因的表达模式和相关性。

  2. 生物信息学研究:热图可以用来展示基因组、转录组、蛋白质组等生物信息学数据的分布和关系,从而帮助研究人员分析数据并发现相关性。

  3. 市场分析:热图可以用来展示市场中不同产品或服务的销售情况,从而帮助企业分析市场需求和趋势。

  4. 社交网络分析:热图可以用来展示社交网络中不同用户之间的关系和交互情况,从而帮助研究人员分析社交网络的结构和特征。

  5. 环境监测:热图可以用来展示环境监测数据中不同地点或时间点的数据变化情况,从而帮助环境监测人员分析环境变化和趋势。

二、数据集

  1. 安装及其使用
install.packages('pheatmap')
library(pheatmap)
  1. 读取数据

首先,我们需要读取sbpdata数据集,查看数据集信息

# 加载 R 自带数据集 mtcars
data(mtcars)
# 删除数据集的一列,并转换数据集的行列
mtcars_matrix <- t(as.matrix(mtcars[, -1]))

数据集展示

     Mazda RX4 Mazda RX4 Wag Datsun 710 Hornet 4 Drive Hornet Sportabout Valiant Duster 360 Merc 240D Merc 230 Merc 280 Merc 280C Merc 450SE Merc 450SL Merc 450SLC Cadillac Fleetwood
cyl          6             6          4              6                 8       6          8       4.0      4.0      6.0       6.0        8.0        8.0         8.0                  8
disp       160           160        108            258               360     225        360     146.7    140.8    167.6     167.6      275.8      275.8       275.8                472
hp         110           110         93            110               175     105        245      62.0     95.0    123.0     123.0      180.0      180.0       180.0                205
     Lincoln Continental Chrysler Imperial Fiat 128 Honda Civic Toyota Corolla Toyota Corona Dodge Challenger AMC Javelin Camaro Z28 Pontiac Firebird Fiat X1-9 Porsche 914-2 Lotus Europa
cyl                    8                 8      4.0         4.0            4.0           4.0                8           8          8                8         4           4.0          4.0
disp                 460               440     78.7        75.7           71.1         120.1              318         304        350              400        79         120.3         95.1
hp                   215               230     66.0        52.0           65.0          97.0              150         150        245              175        66          91.0        113.0
     Ford Pantera L Ferrari Dino Maserati Bora Volvo 142E
cyl               8            6             8          4
disp            351          145           301        121
hp              264          175           335        109

三、基础用法

用pheatmap函数绘制热图,标准化参数scale可选"none", "row", "column";分别是不做归一化处理,按行均一化,按列均一化

1. 不做归一化处理(none)

pheatmap(mtcars_matrix,scale='none')

none

2. 均一化(row)

pheatmap(mtcars_matrix,scale='row')

row

3. 按列均一化(column)

pheatmap(mtcars_matrix,scale='column')

column

4. 一些个性化参数的设置



pheatmap(mtcars_matrix,scale = "none",
         show_colnames = TRUE, # 显示列名
         show_rownames=TRUE, # 显示行名
         fontsize=10, # 字体大小
         color = colorRampPalette(c('#ADD8E6','yellow','#ff0000'))(50), # 指定颜色,50代表生成了50种渐变色的向量
         annotation_legend=TRUE, # 显示图例
         border_color="black",  # 每个方块边框颜色
         cluster_rows = TRUE, # 对行聚类
         cluster_cols = TRUE, # 对列聚类,行列聚类使用的度量方法clustering_distance_rows=“euclidean”,一般默认欧氏距离;也可选用其他度量方法,如可选用 "correlation"表示按照 Pearson correlation方法进行聚类
         display_numbers=TRUE, # 在热图中每个单元格中显示具体数值
         number_color="black", # 数值的颜色
         cellwidth = 30,cellheight = 15, # 设置热图方块宽度和高度
         main="mtcars" # 设置图形标题
)

image

5. 聚类热图划分隔断


# 尝试进行聚类热图划分隔断,假设导入的数据未进行相关性系数计算,
pheatmap(mtcars_matrix, 
         scale = "row", # 按行归一化,查看因子在不同样本中的分布情况
         cluster_cols = FALSE, clustering_distance_rows = "correlation", # 取消列聚类,表示行聚类使用皮尔森相关系数聚类
         treeheight_row = 30, # 设置行聚类树高
         cutree_rows =4 # 根据样品列聚类情况将热图的行方向隔开为4份
)

image

四、组合图进阶

image 一篇Science文章的一个高颜值高难度组合图表(如上图)

install.packages("devtools")
library(devtools)
devtools::install_github("shinepreventer/ggcor-hou")

这个开发者把ggcor这个包关闭了,因此需要从备用仓库下载,而且下载会遇到一些错误,解决方法如下:

install.packages(c('ggnewscale', 'igraph', 'tidygraph'))
library(devtools)
devtools::install_github("Github-Yilei/ggcor")



# 执行结果,代表需要更新的R包
Which would you like to update?

1: All                          
2: CRAN packages only           
3: None                         
4: rlang (1.0.6 -> 1.1.1) [CRAN]
5: purrr (0.3.5 -> 1.0.1) [CRAN]
6: cli   (3.4.1 -> 3.6.1) [CRAN]
#下载一段时间后,会让你选择输入一个数字1-14,就是版本的问题,随便填写。

# 重启R,再执行
remove.packages("stringi")
install.packages("stringi", type="binary")
remove.packages("rlang")
install.packages("rlang", type="binary")
remove.packages("purrr")
install.packages("purrr", type="binary")
remove.packages("cli")
install.packages("cli", type="binary")
library(devtools)
devtools::install_github("Github-Yilei/ggcor",force=TRUE)
library(ggcor)

1. 基本使用方法

install.packages('vegan')
library(vegan)
library(ggcor)
install.packages('dplyr')
library(dplyr)

quickcor(mtcars, cor.test = TRUE) +
  geom_square(data = get_data(type = "lower", show.diag = FALSE)) +
  geom_mark(data = get_data(type = "upper", show.diag = FALSE)) +
  geom_abline(slope = -1, intercept = 12)

image

2. 进阶使用方法()

library(dplyr)
#> Warning: package 'dplyr' was built under R version 3.6.2
data("varechem", package = "vegan")
data("varespec", package = "vegan")

mantel <- mantel_test(varespec, varechem,
                      spec.select = list(Spec01 = 1:7,
                                         Spec02 = 8:18,
                                         Spec03 = 19:37,
                                         Spec04 = 38:44)) %>% 
  mutate(rd = cut(r, breaks = c(-Inf, 0.2, 0.4, Inf),
                  labels = c("< 0.2", "0.2 - 0.4", ">= 0.4")),
         pd = cut(p.value, breaks = c(-Inf, 0.01, 0.05, Inf),
                  labels = c("< 0.01", "0.01 - 0.05", ">= 0.05")))

quickcor(varechem, type = "upper") +
  geom_square() +
  anno_link(aes(colour = pd, size = rd), data = mantel) +
  scale_size_manual(values = c(0.5, 1, 2)) +
  scale_colour_manual(values = c("#D95F02", "#1B9E77", "#A2A2A288")) +
  guides(size = guide_legend(title = "Mantel's r",
                             override.aes = list(colour = "grey35"), 
                             order = 2),
         colour = guide_legend(title = "Mantel's p", 
                               override.aes = list(size = 3), 
                               order = 1),
         fill = guide_colorbar(title = "Pearson's r", order = 3))

image

3. 高阶使用方法(原型热图)

install.packages('ambient')
library(ambient)

rand_correlate(100, 8) %>% ## require ambient packages
  quickcor(circular = TRUE, cluster = TRUE, open = 45) +
  geom_colour(colour = "white", size = 0.125) +
  anno_row_tree() +
  anno_col_tree() +
  set_p_xaxis() +
  set_p_yaxis()

image

五、热图解析方法

  1. 观察颜色条:热图操作中最基本的部分就是颜色条,显示出了数据的分布情况和数据的值域。颜色条上颜色的变化从低到高,代表数据从小到大的变化。通过研究颜色条,可以快速了解数据的分布和值域,从而对热图中的数据分布产生直观感受。

  2. 识别异常值:通过比较颜色条的级别和图中对应单元格的颜色,可以识别矩阵中的异常值。某些红或蓝色(根据您使用的颜色映射)显然与其他大部分颜色不同,这些点就是潜在的异常值。识别这些异常值有助于进一步的探究和分析数据表。

  3. 查找模式:可以观察热图中的颜色模式来发现数据之间的关系。例如,一列中的许多蓝色通常表示值通常较小,而很少的红色可能表示较大的不寻常值。在热图中发现模式有助于理解数据之间的关系,进而引导进一步的数据分析和挖掘。

  4. 调整参数:热图通常是基于不同的参数得到的。您可以修改颜色条和颜色映射,或者选择在不同的颜色组中选择合适的颜色。这些调整允许您更好地理解数据并突出矩阵中重要的部分。

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

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

相关文章

阿里云服务器可以干嘛?ChatGPT等12件小事

拥有一台阿里云服务器可以用来做什么&#xff1f;ChatGPT最近很火&#xff0c;可以在云服务器上部署本地ChatGPT&#xff0c;搭建个人博客、企业网站&#xff0c;学习Linux、跑Python爬虫等&#xff0c;阿里云服务器网分享使用阿里云服务器用途的12件小事&#xff1a; 阿里云服…

cda星型模式、星座模式和雪花模式是什么鬼,怎么记

一、星型模式、雪花模式、星座模式的英文 星型模式 star schema 雪花模式 snowflake schema 二、形象记忆三种模式 星型模式&#xff0c;就像海绵宝宝里面的派大星&#xff0c;它长了多只手&#xff0c;每只手都抓着一个人。注意&#xff01;只有一个派大星&#xff08;只有…

高精度_加减乘除(理论+模板+例题)

&#x1f442; Rush E (Impossible Version) - Sheet Music Boss - 单曲 - 网易云音乐 &#x1f442; My Favorite Things - 羊毛とおはな - 单曲 - 网易云音乐 目录 &#x1f33c;前言 &#x1f33c;理论 &#x1f33c;理论结合题目 &#x1f3c6;1088: 大整数加法 &am…

Android Jetpack之Room数据库的使用(Kotlin+Room)

作者&#xff1a;舒呐 一、基本介绍 Room 持久性库在 SQLite 上提供了一个抽象层&#xff0c;以便在充分利用 SQLite 的强大功能的同时&#xff0c;能够流畅地访问数据库。具体来说&#xff0c;Room 具有以下优势&#xff1a; 针对 SQL 查询的编译时验证。可最大限度减少重复…

django ORM框架(操作数据库)

一、ORM框架介绍 ORM框架&#xff0c;把类和数据进行映射&#xff0c;通过类和对象操作它对应表格中的数据&#xff0c;进行增删改查&#xff08;CRUD) ORM框架中 数据库&#xff1a;需要提前手动创建数据库 数据表&#xff1a;与OMR框架中的模型类对应 字段&#xff1a;模…

阿里云,又瘫了!

大家好&#xff0c;我是老杨。 不知道你对前段时间&#xff0c;阿里云瘫痪的事情有印象不&#xff1f; 12月18号&#xff0c;阿里云发生了大规模服务中断的事情——主要是阿里云香港Region可用区C发生大规模服务中断事件。 中断也不是第一次了&#xff0c;但引起我注意的是&…

面向对象技术

面向对象技术 面向对象基础 面向对象基本概念 面向对象分析 面向对线设计 面向对象测试 UML 事务 关系 图 设计模式 创建型设计模式 结构型设计模式 行为型设计模式 面向对象基本概念 面向对象基本概念 达成目标具体需要做哪些事情。 对象 : 基本的运行实体,为类的实…

Vector - CAPL - CANoe硬件配置函数 - 05

目录 resetCan -- 重置CAN控制器 代码示例 ResetCanEx -- 重置CAN控制器的特定CAN通道 代码示例 ScanBaudrateActive -- 特定通道设置波特率 ScanBaudratePassive -- 开始扫描并检测给定通道上的波特率 resetCan -- 重置CAN控制器 功能&#xff1a;重置CAN控制器&#xf…

(2020)End-to-end Neural Coreference Resolution论文笔记

2020End-to-end Neural Coreference Resolution论文笔记 Abstract1 Introduction2 Related Work3 Task4 Model4.1 Scoring Architecture4.2 Span Representations5 Inference6 Learning7 Experiments7.1 HyperparametersWord representationsHidden dimensionsFeature encoding…

学习HCIP的day.06

十一、OSFP扩展知识点 1、关于OSPF状态机的问题 &#xff08;1&#xff09;在MA网络中&#xff08;要进行DR/BDR选举&#xff09;存在7种状态机&#xff0c;init是路由器A收到邻居B的hello包&#xff0c;但该hello包中没有A的RID&#xff1b; &#xff08;2&#xff09;在点到…

汽车EEA架构演进以及域控制器发展介绍

1、重要名词解析 &#xff08;1&#xff09;SDV&#xff1a;软件定义汽车&#xff1b; &#xff08;2&#xff09;SOA &#xff1a;一种 C/S 架构的软件设计方法&#xff1b; &#xff08;3&#xff09;OTA&#xff1a;空中下载技术&#xff08;Over-the-Air Technology&#x…

【MySql】数据库事务

事务 事务事务的操作事务并发处理可能出现的问题隔离级别MVCC&#xff1a;多版本并发控制 事务 事物本质上指一条 sql 语句或一组 sql 组合 事务的特性&#xff1a;ACID 1、原子性&#xff1a;一个事务&#xff0c;要么一次性完成&#xff0c;要么就不做 2、一致性&#xff1…

STM32驱动超声波+OLED显示,并上传数据到云端(ONENET)

本文将介绍如何使用STM32F103C8T6单片机和HC-SR04超声波测距模块来实现测距功能&#xff0c;并通过0.96寸OLED屏幕显示测距结果。 首先&#xff0c;我们需要了解一下HC-SR04超声波测距模块的工作原理。该模块通过发送超声波脉冲并接收回波信号的时间来计算物体与模块之间的距离…

C++ STL 标准模板库介绍与入门

目录 1、概述 1.1、C 标准库 1.2、Boost库 2、STL 版本 2.1、HP 原始版本 2.2、P. J. 实现版本 2.3、RW 实现版本 2.4、SGI 实现版本 2.5、STLport 实现版本 3、STL 的六大组件 3.1、STL 六大组件构成 3.2、六大组件的交互关系 4、STL 的重要性 5、总结 VC常用功…

java spring MVC之RESTful快速开发

我这里有个一springboot项目 我在启动类同目录下创建了一个目录 目录名叫 controller 里面有一个UserController diam结构是这样的 package com.example.threshold.controller;import com.example.threshold.user; import org.springframework.stereotype.Controller; import…

平衡二叉树理论详解

文章目录 基本概念平衡二叉树插入结点LL&#xff08;左单旋&#xff09;RR&#xff08;右单旋&#xff09;LR&#xff08;左右旋&#xff09;RL&#xff08;右左旋&#xff09; 示例插入推导过程 基本概念 平衡二叉树是一棵空树或它的左右两个子树的高度差的绝对值不超过1&…

Maven ( 二 ) 项目应用

4.资源管理 4.0.pom.xml Maven的pom.xml是一个项目对象模型(Project Object Model)&#xff0c;它是Maven项目的构建文件。它描述了一个项目的基本信息&#xff0c;包括项目依赖、插件、仓库等信息。 下面是一个简单的pom.xml示例&#xff1a; <project xmlns"http…

深度学习用于医学预后-第二课第三周4-7节-关于事件的时间数据,认识处理删失数据

在本课中&#xff0c;我们将讨论生存数据。为了能够对生存进行建模&#xff0c;我们需要能够以我们可以处理的形式表示数据。 主要的挑战是删失数据&#xff0c;这是一种特殊形式的缺失数据。我们接下来将要研究这一点。 在这节课中&#xff0c;我们将谈论生存数据和删失。 …

LeetCode 96 不同的二叉搜索树

题目&#xff1a; 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5 示例 2&#xff1a; 输入&#xff1a;n 1 …

第七章:C语言的操作符

说起操作符大家都不陌生&#xff0c;从我们最初的 - c * / 加减乘除&#xff0c;到更加深奥的操作符&#xff0c;而今天我要有完整的系统来理清楚C语言的操作符到底有什么&#xff0c;和它们相关的用法&#xff0c;话不多说&#xff0c;直接走进今天的主题----C语言的操…