无热图不组学!高阶文献热图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. 调整参数:热图通常是基于不同的参数得到的。您可以修改颜色条和颜色映射,或者选择在不同的颜色组中选择合适的颜色。这些调整允许您更好地理解数据并突出矩阵中重要的部分。
目录
相关文章
|
数据可视化
绘制热图时看不出颜色差异?四种方式转换处理使结果显而“易”见
绘制热图时看不出颜色差异?四种方式转换处理使结果显而“易”见
20649 2
|
机器学习/深度学习
这图怎么画| 相关性热图+柱状图
这图怎么画| 相关性热图+柱状图
261 0
23【办公软件】WPS2019打开时报错:安装Office自定义项,安装期间出错
左下角【开始】按钮,点击【运行】,在对话框输入【regedit】打开注册表
2105 0
|
API
GEE案例分析——利用sentinel-3数据计算空气污染指数(Air Pollution Index,简称API)
GEE案例分析——利用sentinel-3数据计算空气污染指数(Air Pollution Index,简称API)
415 0
|
并行计算 数据可视化 算法
CMplot & rMVP | 全基因组曼哈顿图和QQ图轻松可视化!
`CMplot`和`rMVP`是R语言中的两个包,用于全基因组关联分析(GWAS)的数据可视化。`CMplot`专注于曼哈顿图和QQ图的绘制,支持多种图表类型,如常见的SNP密度图、环状曼哈顿图、矩阵图、单条染色体图和多重曼哈顿图等。`rMVP`不仅包含了`CMplot`的功能,还支持更复杂的GWAS方法,如线性/混合线性模型和基因组选择算法,优化了内存管理和计算效率,特别适合大规模数据集。此外,它还提供PCA图和柱状图。两者都提供了丰富的参数定制图表。
983 1
CMplot & rMVP | 全基因组曼哈顿图和QQ图轻松可视化!
|
机器学习/深度学习 算法
概率分布深度解析:PMF、PDF和CDF的技术指南
本文将深入探讨概率分布,详细阐述概率质量函数(PMF)、概率密度函数(PDF)和累积分布函数(CDF)这些核心概念,并通过实际示例进行说明。
1012 15
概率分布深度解析:PMF、PDF和CDF的技术指南
|
人工智能
跟着 Nature Communication 学作图 | 热图+格子注释(通路富集相关)
跟着 Nature Communication 学作图 | 热图+格子注释(通路富集相关)
497 0
|
SQL NoSQL MongoDB
MongoDB 根据多个条件批量修改
MongoDB 根据多个条件批量修改
600 0
|
数据可视化
利用ggcor包绘制相关性组合图及环状热图
ggcor包最初是因为能快速实现19年Science一组合相关性图(上图所示)变得流行起来,除此该包对热图、热图等等的可视化都是很方便快捷的,除了之前介绍过的几种相关性图几种方式,此包也是个不错的选择,且具独特的风格(特别是组合相关性图、环形热图)。但是不知道因为何种原因此包在Github上消失了....,到作者(厚缊)个人博客上瞅了瞅发现关于包的参数介绍示例等也都没有了,在评论区里看到作者回答项目已不再提供任何代码和任何资料,需要的可以去国内的gitee和国外的github搜索看看有没有别人存的代码。
1046 0
|
存储 数据可视化 数据挖掘
scRNA-seq|Seurat 整合分析
scRNA-seq|Seurat 整合分析