R语言分组heatmap
引言
在数据分析中,我们经常需要对数据进行可视化展示,以更好地理解数据之间的关系和趋势。而heatmap(热力图)是一种常用的可视化工具,用于显示矩阵数据中的数值大小。
R语言是一种广泛使用的数据分析和统计建模语言,拥有丰富的绘图功能。本文将介绍如何使用R语言绘制分组heatmap,以及如何解读heatmap图。
准备工作
在开始绘制heatmap之前,我们需要准备一些数据。假设我们有一份包含学科成绩的数据集,其中包括学生的姓名、年龄和各科目的成绩。我们将使用这个数据集来绘制heatmap。
首先,我们需要导入所需的R包。在这个例子中,我们将使用ggplot2
包来绘制heatmap,dplyr
包用于数据处理,tidyr
包用于数据整理。
# 导入所需的R包
library(ggplot2)
library(dplyr)
library(tidyr)
数据准备
接下来,我们将创建一个包含学生姓名、年龄和成绩的数据集。为了方便演示,我们只选取了5个学生和3个科目。
# 创建数据集
students <- data.frame(
name = c("张三", "李四", "王五", "赵六", "钱七"),
age = c(18, 19, 17, 18, 19),
math = c(90, 85, 80, 95, 75),
english = c(85, 90, 75, 80, 95),
science = c(80, 75, 85, 90, 70)
)
现在,我们的数据集已经准备好了。
数据处理
在绘制heatmap之前,我们需要对数据进行一些处理,以便能够满足heatmap的要求。
首先,我们将数据集转换为长格式。这是为了方便后续的数据整理和绘图。
# 转换为长格式
students_long <- students %>%
pivot_longer(cols = c(math, english, science), names_to = "subject", values_to = "score")
现在,我们的数据已经转换为长格式,每一行表示一个学生的一个成绩。
接下来,我们将为学生的姓名和年龄创建一个分组变量,以便在绘图时能够按照分组进行归类。
# 创建分组变量
students_long <- students_long %>%
mutate(group = ifelse(age >= 18, "成年", "未成年"))
现在,我们的数据集中有一个名为"group"的变量,用于表示学生的分组信息。
绘制heatmap
绘制heatmap的关键是使用geom_tile()
函数,它可以在图表中绘制矩形,每个矩形的颜色表示对应数据的大小。
# 绘制heatmap
heatmap <- ggplot(students_long, aes(x = group, y = name, fill = score)) +
geom_tile() +
scale_fill_gradient(low = "lightblue", high = "darkblue") +
theme_minimal()
在这个例子中,我们以学生的姓名为y轴,以分组信息为x轴,矩形的颜色表示对应的成绩大小。
通过scale_fill_gradient()
函数,我们可以设置热力图的颜色渐变。在本例中,我们选择了一种从浅蓝色到深蓝色的渐变。
最后,我们使用theme_minimal()
函数来设置图表的主题样式。
解读heatmap
通过绘制heatmap,我们可以直观地了解学生的分组情况和成绩水平。
首先,我们可以观察每个学生在不同科目上的成绩大小。较高的颜色表示较高的分数,较低的颜色表示较低的分数。
其次,我们可以比较不同分组(成年和未成年