📜  在 R 中更改 ggplot2 热图中范围的颜色(1)

📅  最后修改于: 2023-12-03 15:37:28.063000             🧑  作者: Mango

在 R 中更改 ggplot2 热图中范围的颜色

简介

ggplot2 是 R 软件包中的一个用于绘制数据可视化的扩展包。ggplot2 中的热图(heatmap)是一种常用的可视化方式,用于展示数据随着时间、位置或条件的变化。

在 ggplot2 的热图中,我们可以更改热图中放置数据的颜色映射。在默认情况下,亮颜色表示大值,暗颜色表示小值。但是,如果我们想要使用不同的颜色或者不同的色阶来表示不同的范围,则需要进行更改。

本文将介绍如何在 ggplot2 热图中更改范围的颜色。

热图

使用 R 中的 ggplot2 包绘制热图需要使用 geom_tile() 函数。

准备数据

我们使用 R 内置的 mtcars 数据集来作为示例数据,在此之前需要先加载 ggplot2dplyr 库。

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"))
结论

我们可以使用 ggplot2scale_fill_gradient() 函数来更改热图中范围的颜色。使用 limits 参数指定数据的范围,使用 lowhigh 参数指定颜色。此外,我们可以指定自己的色阶来映射数据的颜色。