R语言聚类分析和相关分析的热图详解
R语言聚类分析和相关分析的热图详解
聚类分析和相关分析是数据科学和医学研究中常用的统计方法,热图则是一种有效的可视化工具,用于展示这些分析的结果。本文将详细介绍如何使用R语言绘制聚类分析和相关分析的热图,包括具体的代码实现和实例演示。
热图的基本概念
热图是一种以颜色的变化来表示数据矩阵或数据集中程度的图表工具。颜色越深表示数据集中度越高,颜色越浅表示数据集中度越小。热图常用于展示基因表达、蛋白质相互作用、代谢途径活性等方面的数据信息。
聚类分析的热图详解
聚类分析是一种将数据集中的对象分组的统计方法,目的是使组内对象的相似度尽可能高,而组间对象的相似度尽可能低。聚类分析的结果通常通过热图来展示,热图中的颜色深浅表示聚类成员之间的相似度高低或距离远近。
下面通过一个示例来了解热图的制作流程:
# 加载需要的R包
library(ggh4x)
library(ggplot2)
library(tidyverse)
library(ggdendro)
# 准备数据,热图的输入是一个数值型矩阵
test = matrix(rnorm(200), 20, 10) # 创建一个随机数矩阵
test[1:10, seq(1, 10, 2)] = test[1:10, seq(1, 10, 2)] + 3
test[11:20, seq(2, 10, 2)] = test[11:20, seq(2, 10, 2)] + 2
test[15:20, seq(2, 10, 2)] = test[15:20, seq(2, 10, 2)] + 4
colnames(test) = paste("Test", 1:10, sep = "") # 命名列名Test1——Test10
rownames(test) = paste("Gene", 1:20, sep = "") # 命名行名Gene1——Gene20
yclust <- hclust(dist(test)) # 计算基于矩阵test行的距离关系进行的层次聚类的结果
xclust <- hclust(dist(t(test))) # 计算基于矩阵test列的距离关系进行的层次聚类的结果
p = test %>%
as.data.frame() %>%
rownames_to_column() %>%
pivot_longer(cols = 2:ncol(.),
names_to = "sample",
values_to = "exp") %>%
ggplot(aes(x = sample,y = rowname))+
geom_tile(aes(fill = exp))+
scale_fill_gradient2(midpoint = 2.5,
low = '#2fa1dd',
mid="white",
high = '#f87669') +
scale_y_dendrogram(hclust = yclust) +
scale_x_dendrogram(hclust = xclust,position = 'top') +
theme(panel.grid = element_blank(),
axis.line = element_blank(),
axis.ticks = element_blank(),
axis.title = element_blank(),
panel.background = element_rect(fill = NA),
legend.background = element_rect(fill = NA),
plot.background = element_rect(fill = NA),)
通过这个热图,可以直观地观察到不同基因在不同样本中的表达模式、相似性和聚类关系,有助于发现潜在的模式、规律和群组结构。同时,颜色渐变和聚类树形图也提供了额外的信息,有助于研究人员更好地理解和解释数据中的特点。
相关分析的热图详解
多个特征值之间的相关性关系可以通过相关性热图(correlation heatmap)有效地表征。相关性热图通过颜色的深浅来表示特征间相关系数的大小,常用于探索数据集中不同变量间的关系。它不仅能帮助我们直观地识别变量之间的显著正相关或负相关,还能帮助我们检测潜在的多重共线性问题。
接下来,我们将使用ggplot2包绘制热图,以展示两个基因的相关性。该图展示了所有变量间的相关系数,颜色深浅表示相关系数的大小,并将显著的相关系数数值标记在图中。
# 生成一个随机数矩阵作为示例数据
set.seed(123)
data <- matrix(rnorm(100), 10, 10)
# 计算相关性矩阵
correlation_matrix <- cor(data)
# 将相关性矩阵转换为长数据格式
cor_data <- as.data.frame(as.table(correlation_matrix))
colnames(cor_data) <- c("gene1", "gene2", "correlation")
# 设置显著性水平
significance_level <- 0.5
# 绘制相关性热图并标记显著的相关系数
ggplot(cor_data, aes(x = gene1, y = gene2)) +
geom_tile(aes(fill = correlation)) +
geom_text(data = subset(cor_data, abs(correlation) > significance_level),
aes(label = round(correlation, 2)), color = "black", size = 3) +
scale_fill_gradient2(low = "#2fa1dd", mid = "white", high = "#f87669", midpoint = 0) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 8, color = "black"),
axis.text.y = element_text(size = 8, color = "black"),
panel.grid = element_blank(),
strip.text = element_text(size = 10)) +
labs(title = "Correlation Heatmap", x = "Gene 1", y = "Gene 2") +
scale_x_discrete(position = "top") +
coord_fixed() +
theme(legend.title = element_text(size = 10, face = "bold"),
legend.text = element_text(size = 8))
通过图,我们可以直观地观察到不同基因在不同样本中的表达模式、相似性和聚类关系,有助于发现潜在的模式、规律和群组结构。同时,颜色渐变和聚类树形图也提供了额外的信息展示,帮助研究人员更好地理解和解释数据中的特点。
另外,多个特征值之间的相关性关系可以通过热图很好地进行表征。热图通过颜色的深浅来表示特征间相关系数大小的,它常用于探索数据集中不同变量间的关系。热图不仅能帮助我们直观地识别哪些变量之间存在显著的正相关或负相关,还能帮助我们检测潜在的多重共线性问题。接下来我们使用ggplot2包绘制热图展示两个基因的相关性的示例。展示所有变量间的相关系数,颜色表示相关系数大小,并将显著的相关系数数值标记在图中。
# 生成一个随机数矩阵作为示例数据
set.seed(123)
data <- matrix(rnorm(100), 10, 10)
# 计算相关性矩阵
correlation_matrix <- cor(data)
# 将相关性矩阵转换为长数据格式
cor_data <- as.data.frame(as.table(correlation_matrix))
colnames(cor_data) <- c("gene1", "gene2", "correlation")
# 设置显著性水平
significance_level <- 0.5
# 绘制相关性热图并标记显著的相关系数
ggplot(cor_data, aes(x = gene1, y = gene2)) +
geom_tile(aes(fill = correlation)) +
geom_text(data = subset(cor_data, abs(correlation) > significance_level),
aes(label = round(correlation, 2)), color = "black", size = 3) +
scale_fill_gradient2(low = "#2fa1dd", mid = "white", high = "#f87669", midpoint = 0) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1, size = 8, color = "black"),
axis.text.y = element_text(size = 8, color = "black"),
panel.grid = element_blank(),
strip.text = element_text(size = 10)) +
labs(title = "Correlation Heatmap", x = "Gene 1", y = "Gene 2") +
scale_x_discrete(position = "top") +
coord_fixed() +
theme(legend.title = element_text(size = 10, face = "bold"),
legend.text = element_text(size = 8))
通过图,我们可以直观地了解基因之间的相关性情况,颜色变化展示了基因之间的关联性,帮助我们更好地理解数据中的模式和关系,为进一步的数据分析和探索提供了参考。