📅  最后修改于: 2023-12-03 15:37:28.063000             🧑  作者: Mango
ggplot2 是 R 软件包中的一个用于绘制数据可视化的扩展包。ggplot2 中的热图(heatmap)是一种常用的可视化方式,用于展示数据随着时间、位置或条件的变化。
在 ggplot2 的热图中,我们可以更改热图中放置数据的颜色映射。在默认情况下,亮颜色表示大值,暗颜色表示小值。但是,如果我们想要使用不同的颜色或者不同的色阶来表示不同的范围,则需要进行更改。
本文将介绍如何在 ggplot2 热图中更改范围的颜色。
使用 R 中的 ggplot2 包绘制热图需要使用 geom_tile()
函数。
我们使用 R 内置的 mtcars
数据集来作为示例数据,在此之前需要先加载 ggplot2
和 dplyr
库。
library(ggplot2)
library(dplyr)
data(mtcars)
由于 mtcars
数据集的数据很少,我们首先将其扩展至 1000 行以模拟更加复杂的数据。并且对数据进行标准化以使比较结构化。
mtcars_expand <- mtcars[rep(1:nrow(mtcars), 100), ]
mtcars_expand[1:11] <- scale(mtcars_expand[1:11])
我们可以使用下面的代码绘制默认的热图,它使用从深靛色到白色渐变来表示数据的范围。
ggplot(data = mtcars_expand, aes(x = factor(cyl), y = factor(gear))) +
geom_tile(aes(fill = mpg)) +
scale_fill_gradient(low = "darkslateblue", high = "white") +
theme(panel.background = element_rect(fill = "white"))
该热图使用不同的颜色表示每个细胞的数据范围。在这种情况下,蓝色表示低值(mpg),白色表示高值。但是,这有时可能会需要不同的颜色或者不同的范围。下面将介绍如何进行这样的调整。
更改颜色映射需要使用 scale_fill_gradient()
函数。这个函数为每个细胞中的值选择颜色,并为数据范围定义映射。
我们可以使用 limits
参数来指定数据范围。下面的示例将所有低于 10 的值设置为黑色,所有高于 50 的值设置为红色。
ggplot(data = mtcars_expand, aes(x = factor(cyl), y = factor(gear))) +
geom_tile(aes(fill = mpg)) +
scale_fill_gradient(limits = c(10, 50), low = "black", high = "red") +
theme(panel.background = element_rect(fill = "white"))
这将创建一个热图,黑色表示低于 10 的值,红色表示高于 50 的值。其他值将使用渐变从黑色到红色映射。
我们还可以使用自定义的色阶来映射值的颜色。在下面的示例中,我们将使用从 “cyan3” 到 “red3” 色阶。
ggplot(data = mtcars_expand, aes(x = factor(cyl), y = factor(gear))) +
geom_tile(aes(fill = mpg)) +
scale_fill_gradient(low = "cyan3", high = "red3") +
theme(panel.background = element_rect(fill = "white"))
我们可以使用 ggplot2
的 scale_fill_gradient()
函数来更改热图中范围的颜色。使用 limits
参数指定数据的范围,使用 low
和 high
参数指定颜色。此外,我们可以指定自己的色阶来映射数据的颜色。