跳到主要内容

R颜色

提示
  1. 颜色在R中的应用:R中的图表通过col参数着色,可使用颜色名称、十六进制值或RGB值来指定颜色。
  2. 颜色名称和十六进制值:R提供超过650种颜色名称,也支持使用十六进制格式(如#RRGGBB)定义颜色。
  3. 颜色的灵活使用:R中可以通过颜色向量实现颜色循环,并提供内置颜色调色板(如rainbow()heat.colors())快速生成颜色向量。

通过着色,我们可以让我们的图表在视觉上更加吸引人。这通常是通过 col 图形参数来实现的。

我们可以以字符串的形式指定想要的颜色名称。例如,如果我们想让图表呈现红色,我们传入 col = "red"

在 R 中为图表添加颜色

在本节中,我们使用以下的 temp 向量来创建 条形图

# 创建名为 temp 的向量
temp <- c(5,7,6,4,8)

# 未着色的 temp 条形图
barplot(temp, main="默认情况")

# 着色的 temp 条形图
barplot(temp, col="coral", main="带颜色")

输出

为图表添加颜色的输出

这里,我们在 barplot() 函数内传入 col = "coral",将我们的条形图着色为珊瑚色。

尝试将其替换为 "green"、"blue"、"violet" 等,看看效果有何不同。

使用颜色名称改变 R 中的图表颜色

R 编程拥有 657 种颜色的名称。我们可以使用 colors() 函数查看所有颜色,或者查看这个 R 颜色 PDF

# 显示所有颜色名称
colors()

输出

[1] "white"           "aliceblue"        "antiquewhite"
[4] "antiquewhite1" "antiquewhite2" "antiquewhite3"
[7] "antiquewhite4" "aquamarine" "aquamarine1"
...
...
[649] "wheat3" "wheat4" "whitesmoke"
[652] "yellow" "yellow1" "yellow2"
[655] "yellow3" "yellow4" "yellowgreen"

这里,colors() 函数以字母顺序返回所有颜色名称的向量,第一个元素是 "white"

我们可以通过索引这个向量来给图表着色。例如,col=colors()[655]col="yellow3" 是一样的。

在 R 中使用十六进制值作为颜色

在 R 中,除了使用颜色名称,还可以用十六进制值定义颜色。

我们将颜色定义为形式为 #RRGGBB6 位十六进制数字。其中 RR 代表 红色GG 代表 绿色BB 代表 蓝色,值的范围是 00FF

例如,#FF0000 代表 红色#00FF00 代表 绿色,类似地,#FFFFFF 代表 白色#000000 代表 黑色。 让我们来看看如何在 R 中实现使用十六进制值作为颜色,

# 创建名为 temp 的向量
temp <- c(5,7,6,4,8)

# 使用十六进制值 #c00000
barplot(temp, col="#c00000", main="#c00000")

# 使用十六进制值 #AE4371
barplot(temp, col="#AE4371", main="#AE4371")

输出

在 R 中使用十六进制值作为颜色的输出

在上面的例子中,我们在 barplot() 函数内为 col 参数传递了十六进制值。

这里,

  • #c00000 - 这个十六进制由 75.3% 红色、0% 绿色和 0% 蓝色组成
  • #AE4371 - 这个十六进制由 68.24% 红色、26.27% 绿色和 44.31% 蓝色组成

在 R 中使用 RGB 值为图表着色

R 中的 rgb() 函数允许我们用介于 01 之间的数字指定红色、绿色和蓝色的组分。

这个函数返回上面讨论的相应的十六进制代码。例如,

rgb(0, 1, 0) # 打印 "#00FF00"

rgb(0.3, 0.7, 0.9) # 打印 "#4DB3E6"

我们可以直接将 rgb() 传递给 col 参数:

# 创建名为 temp 的向量
temp <- c(5,7,6,4,8)

# 使用 rgb() 为条形图着色
barplot(temp, col = rgb(0.3, 0.7, 0.9), main="使用 RGB 值")

输出

在 R 中使用 RGB 值作为颜色的输出

这里,我们在 barplot() 中将 rgb() 传递给了 col 参数。

所以图表根据 RGB 值着色。

R 中的颜色循环

我们可以通过提供颜色的向量为条形图的每个条形分别着色。

如果提供的颜色数量少于条形的数量,颜色向量将被循环使用。例如,

# 创建名为 temp 的向量
temp <- c(5,7,6,4,8)

# 使用 5 种不同颜色
barplot(temp, col=c("red", "coral", "blue", "yellow", "pink"), main="使用 5 种颜色")

# 使用 3 种不同颜色,最后两个条形将循环使用颜色
barplot(temp, col=c("red", "coral", "blue"), main="使用 3 种颜色")

输出

颜色循环输出

在上述示例中,首先我们通过提供一个包含5种颜色的向量为条形图的每个条形上色,以适应5个不同的条形。

对于第二个条形图,我们提供了一个包含3种不同颜色的向量,所以最后2个条形的颜色被循环使用。

在 R 中使用颜色调色板

R 编程提供了4种内置颜色调色板,可用于快速生成所需长度的颜色向量。

它们是:rainbow()heat.colors()terrain.colors()topo.colors()。我们传入我们需要的颜色数量。

让我们来看一个示例,

# 使用 rainbow() 生成颜色调色板
rainbow(5)

# 输出: "#FF0000FF" "#CCFF00FF" "#00FF66FF" "#0066FFFF" "#CC00FFFF"

这里,请注意十六进制数字是8位长的。最后两位数字是透明度级别,其中 FF 表示不透明,00 表示完全透明。

示例:在 R 中使用颜色调色板

# 创建一个名为 temp 的向量
temp <- c(5,7,6,4,8)

# 使用 rainbow()
barplot(temp, col=rainbow(5), main="rainbow")

# 使用 heat.colors()
barplot(temp, col=heat.colors(5), main="heat.colors")

# 使用 terrain.colors()
barplot(temp, col=terrain.colors(5), main="terrain.colors")

# 使用 topo.colors()
barplot(temp, col=topo.colors(5), main="topo.colors")

输出

颜色调色板

这里,我们使用了4种内置颜色调色板,这些调色板可以用来快速生成所需长度的颜色向量。