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

简介: 近在阅读近五年的一区高分的机器学习文献,其中有一种图出现频率特别高——热图。《

一、概述



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

640.png


《Comparison of Machine Learning Methods for Predicting Outcomes After In-Hospital Cardiac Arrest》

640.png

640.png


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')


640.png

none


2. 均一化(row)


pheatmap(mtcars_matrix,scale='row')

640.png


row


3. 按列均一化(column)


pheatmap(mtcars_matrix,scale='column')

640.png

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" # 设置图形标题
)

640.png


image


5. 聚类热图划分隔断


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

640.png


image


四、组合图进阶



640.jpg

一篇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)

640.png

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))


640.png

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()


640.png

image


五、热图解析方法



  1. 观察颜色条:热图操作中最基本的部分就是颜色条,显示出了数据的分布情况和数据的值域。颜色条上颜色的变化从低到高,代表数据从小到大的变化。通过研究颜色条,可以快速了解数据的分布和值域,从而对热图中的数据分布产生直观感受。
  2. 识别异常值:通过比较颜色条的级别和图中对应单元格的颜色,可以识别矩阵中的异常值。某些红或蓝色(根据您使用的颜色映射)显然与其他大部分颜色不同,这些点就是潜在的异常值。识别这些异常值有助于进一步的探究和分析数据表。
  3. 查找模式:可以观察热图中的颜色模式来发现数据之间的关系。例如,一列中的许多蓝色通常表示值通常较小,而很少的红色可能表示较大的不寻常值。在热图中发现模式有助于理解数据之间的关系,进而引导进一步的数据分析和挖掘。
  4. 调整参数:热图通常是基于不同的参数得到的。您可以修改颜色条和颜色映射,或者选择在不同的颜色组中选择合适的颜色。这些调整允许您更好地理解数据并突出矩阵中重要的部分。
目录
相关文章
|
存储 Shell 索引
如何在Bash中使用For循环和数组?
如何在Bash中使用For循环和数组?
1061 0
23【办公软件】WPS2019打开时报错:安装Office自定义项,安装期间出错
左下角【开始】按钮,点击【运行】,在对话框输入【regedit】打开注册表
3170 0
|
数据采集 JSON 编解码
收藏|Unsplash高清壁纸批量下载(源码+工具)!
收藏|Unsplash高清壁纸批量下载(源码+工具)!
ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略
ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略
ML之Spearman:Spearman相关系数(斯皮尔曼等级相关系数)的简介、案例应用之详细攻略
|
传感器 存储 数据采集
深入调查研究GE-Predix
【11月更文挑战第8天】
1773 2
|
人工智能 vr&ar
PSHuman:开源单图像3D人像重建技术,一张照片就能生成3D人像模型
PSHuman 是一种先进的单图像3D人像重建技术,仅需一张照片即可生成高度逼真的3D模型,支持面部细节、全身姿态和纹理恢复,适用于影视、游戏、虚拟现实等多个领域。
2371 4
PSHuman:开源单图像3D人像重建技术,一张照片就能生成3D人像模型
|
机器学习/深度学习 监控 数据库
Python 毕业设计 - 基于 opencv 的人脸识别上课考勤系统,附源码
Python 毕业设计 - 基于 opencv 的人脸识别上课考勤系统,附源码
|
数据挖掘
r语言数据分析画数据相关性图热力图
r语言数据分析画数据相关性图热力图
658 1
|
存储 数据可视化 数据挖掘
R语言绘制圈图、环形热图可视化基因组实战:展示基因数据比较
R语言绘制圈图、环形热图可视化基因组实战:展示基因数据比较
|
数据采集 缓存 安全
http proxy 协议的工作原理与常见用途
在这篇博客文章中,我们将深入探讨HTTP代理协议的工作原理,揭示它如何在客户端和服务器之间传递HTTP请求和响应,并讨论它在各种应用场景中的常见用途。
2051 0
http proxy 协议的工作原理与常见用途