热图(Heatmap)是一种重要的数据可视化方法,它通过
颜色变化
将数值矩阵中数据的
差异、模式、趋势和关联性
进行展示。在热图中,每个单元格的值被映射为一个特定的颜色,颜色的深浅或色调的变化反映了数据值的大小或差异。在科研绘图中热图常被应用于展示数据的关联性、聚类结构以及整体分布规律等。热图作为数据可视化的一种重要工具,在生物信息学、金融学、水文学、社会科学中应用广泛。
聚类热图结合了热图的可视化效果和聚类分析的统计方法,在展示数据的同时对
行和列进行聚类分析
,以揭示数据中的相似性和差异性,帮助研究者更直观地理解数据间的关系和模式。
图片来源:
https:// doi.org/10.1038/s41598-018-31706-w
https:// doi.org/10.1128/msphere.00104-22
相关性热图以矩阵的形式呈现,通过颜色的深浅来展示
两个或多个变量之间的相关性强度
,其中行和列都代表数据集中的变量。
矩阵中的每个单元格显示两个变量之间的相关性系数。
https:// doi.org/10.3390/math10122000
https:// doi.org/10.3390/jof8070730
组合热图是一种由多种图形组合而成的图表,用于同时展示变量在某种指标的大小及变化趋势,提供了更丰富的信息维度,帮助研究者更全面地理解和分析数据。
图片来源:
https://doi.org/10.1111/1462-2920.12886
https://doi.org/10.1002/lno.11643
方格热图是一种通过颜色深浅来展示数据大小和变化趋势的可视化方法,它通常由若干个小正方形方格组成,每个方格代表数据集中的一个数据点或变量之间的关系。
图片来源:
Heterogeneity in Riverine Ecosystem Service Perceptions Insights for Water-
decision Processes in Transboundary Rivers
https://doi.org/10.1186/s40538-021-00218-7
https://doi.org/10.1002/lno.11643
https:// doi.org/10.1145/3531146.3533222
https:// doi.org/10.7717/peerj.9082
空间热图常用在二维空间或地理空间中表示数据的大小、密度或强度等特征。下图是一张来自Nature的图片,它结合地理信息系统展示不同河段的温度分类阈值。
图片来源:
https://doi.org/10.1038/sdata.2019.17
热图的色系选择对于数据可视化效果至关重要,它直接影响到观众对数据信息的理解和感知。热图色系的选择应该遵循以下几个原则:
(1)热图
install.packages("pheatmap")
# 加载pheatmap包
library(pheatmap)
# 创建行名和列名向量
row_names "Row", 1:10, sep = "")
col_names "Col", 1:10, sep = "")
# 创建一个示例数据矩阵
set.seed(123) # 设置随机种子以保证结果可重复
test_matrix 100), nrow=10, ncol=10,dimnames = list(row_names, col_names)) # 生成一个10x10的随机正态分布矩阵
# 绘制带有聚类的热图
pheatmap(test_matrix,
scale = "row", # 按行进行标准化(也可以选择"column"或"none")
clustering_distance_rows = "euclidean", # 行聚类的距离度量
clustering_distance_cols = "euclidean", # 列聚类的距离度量
clustering_method = "complete", # 聚类方法(也可以使用"average"、"single"等)
color = colorRampPalette(c("blue", "white", "red"))(255), # 颜色渐变
border_color = NA, # 单元格边框颜色
show_rownames = TRUE, # 显示行名
show_colnames = TRUE, # 显示列名
fontsize_row = 8, # 行名字体大小
fontsize_col = 8) # 列名字体大小
(2)Mantel test图
##Mantel test plot
setwd('C:/Users/ASUS/Desktop/Mantel test分析')#设置工作路径
#加载包
library(vegan)
library(dplyr)
library(ggcor)
library(ggplot2)
data("varechem")
data("varespec")
set.seed(20191224)
sam_grp sample(paste0("sample"