R语言配色方案(教程篇)

前言

最常用的R语言配色方案主要有2个包,RColorBrewerggsci,下面我们来分别介绍一下这两个包,并在ggplot绘图中学会应用他们。

RColorBrewer包

获取此包里所有颜色方案

library(RColorBrewer)
display.brewer.all(type = "all")   #查看所有颜色板

可以看出,这个包里面的配色方案,主要分为三种,

  • 离散型颜色(离散型)

  • 单种颜色渐变色(连续型)

  • 两种颜色就渐变色(连续型)

选取其中的一个颜色方案,获取16进制颜色编码,并展示它们

可以通过brewer.pal()函数获取指定颜色方案的16进制颜色编码,这样我们就可以在之后的绘图中手动挑选自己喜欢的颜色了。

tempColors = brewer.pal(9, "BuGn") 
scales::show_col(tempColors,labels=T)

在ggplot2中使用颜色方案

在ggplot2中使用RColorBrewer包的颜色方案可以通过scale_fill_brewer()scale_color_brewer()函数来实现。

对于离散型颜色,可以使用scale_*_brewer()函数来添加填充颜色。例如,要将一个离散型变量的不同水平用RColorBrewer包中的”Set1”配色方案进行填充,可以使用以下代码:

library(ggplot2)
library(RColorBrewer)
p = ggplot(subset(diamonds, carat >= 2.2),
       aes(x = table, y = price, colour = cut)) +
  geom_point(alpha = 0.7) +
  geom_smooth(method = "loess", alpha = 0.05, size = 1, span = 1) +
  theme_bw()

# 修改颜色
p + scale_color_brewer(palette = "Set1")

这样,散点图的每个点会根据离散型变量的不同水平使用”Set1”配色方案进行填充。

对于连续型颜色,可以使用scale_*_distiller()函数来添加线条或点的颜色。例如,要根据一个连续型变量的值使用RColorBrewer包中的”Blues”配色方案来设置点的颜色,可以使用以下代码:

library(ggplot2)
library(RColorBrewer)

# 创建一个示例数据集
data <- data.frame(x = 1:10,
                   y = 1:10,
                   z = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10))

# 绘制散点图,并使用RColorBrewer包的"Spectral"配色方案来设置点的颜色
ggplot(data, aes(x = x, y = y, color = z)) +
  geom_point(size = 5) +
  scale_color_distiller(palette = "Spectral")

这样,散点图中的每个点会根据连续型变量的值使用”Spectral”配色方案进行着色。

ggsci包

ggplot2颜色拓展包ggsci,收集了若干种知名期刊的颜色方案。

学习使用

可以通过下面函数,打开自带的说明书,介绍的非常详细

有各种配色方案和使用说明

vignette("ggsci")

篇幅有限,只把最核心的2种函数简单介绍下

pal_*()获取16进制编码颜色,

library(ggsci)
pal_npg("nrc")(10)
 [1] "#E64B35FF" "#4DBBD5FF" "#00A087FF" "#3C5488FF" "#F39B7FFF" "#8491B4FF"
 [7] "#91D1C2FF" "#DC0000FF" "#7E6148FF" "#B09C85FF"

scale_color_lancet() 在ggplot2中应用配色方案

p + scale_color_jama()

附录

  • 自定义颜色

    • 离散型 scale_*_manual()函数
library(ggplot2)
data <- data.frame(x = 1:5,
                   y = 1:5,
                   category = c("A", "B", "C", "D", "E"))
# 绘制散点图,并自定义离散型变量的颜色映射
ggplot(data, aes(x = x, y = y, color = category)) +
  geom_point(size = 5) +
  scale_colour_manual(values = c("A" = "red", "B" = "blue", "C" = "green", "D" = "orange", "E" = "purple"))

  • 连续性scale_*_gradient()系列函数
library(ggplot2)
library(RColorBrewer)
data <- data.frame(x = 1:10,
                   y = 1:10,
                   z = 1:10)
# 绘制散点图,并使用渐变色来设置连续型变量的填充颜色
ggplot(data, aes(x = x, y = y, fill = z)) +
  geom_tile() +
  scale_fill_gradientn(colors = brewer.pal(3, "Blues"))

  • 更多R包

    • viridis:这个包提供了一组感知均匀的连续配色方案,适合于连续变量的可视化。
  • 另外推荐个截屏软件,Snipaste,有取色器的功能,可以将屏幕上的颜色取下来