ggplot2 颜色配置

ggplot2主要通过FILLCOLOR属性设置几何对象的颜色,可以直接指定某一种颜色,让颜色随变量自动配置或者使用调色板设置颜色[1]

色彩代码

对于单个颜色选择,可以参考R语言绘图颜色对照表,其中包含了几乎可以用到的颜色代码


调色板

对于连续色阶或者多种色彩搭配,官方建议使用RColorBrewer提供的调色板。
ggplot2原生支持通过设置palette来切换调色板[2]这里提供了预设ColorBrewer调色板代号及预览。

p + scale_color_brewer(palette = "PuOr")

另外一种官方原生支持的色板Viridis这里有预设色板。这个色板以连续颜色为主,也可以通过设置discrete=TRUE属性使用离散色阶。

p + scale_color_viridis(option="magma")

此外还可通过ggsci或者ggthemes选择合适的调色板

调色板hex代码查看

  • 这里提供了ColorBrewer调色板动态预览及hex代码查看。
  • 获取其他调色板hex
    library(paletteer)
    paletteer_c(package = "scico", palette = "berlin", n = 10)
  • ggplot2 默认调色板查看
    library(scales) 
    # n为色板阶数
    show_col(hue_pal()(n))

自定义调色板

当以上色板无法满足需求,可以通过以下方式自定义色板[3]

  • 生成色板
    主要使用colorRampPalette,详见文档
    # 定义基准色
    cols<-c('#E64E00','#65B48E','#E6EB00','#E64E00')
    # 生成色板 20 色阶
    # bias用于设置色阶偏移 Bias >1 puts more colors at high values
    pal<-colorRampPalette(cols, bias = 0.5)
    image(x=1:20,y=1,z=as.matrix(1:20),col=pal(20))
  • 查看色板
    pal(20)
    
     [1] "#3E5CC5" "#4469BC" "#4A77B3" "#5085AA" "#5693A2" "#5CA199" "#62AF90" "#72B97F" "#86C268"
    [10] "#9BCB52" "#AFD33B" "#C4DC25" "#D8E50E" "#E6E200" "#E6C900" "#E6B100" "#E69800" "#E67F00"
    [19] "#E66600" "#E64E00"
  • 使用色板
    若使用时n小于设置阶数,则从左开始截断使用。
    # 连续型
    p + scale_color_gradientn(colors = pal(20))
    # 离散型
    p + scale_color_manual(colors = pal(n))

Reference