美文网首页R语言作图
ggplot2 配色笔记

ggplot2 配色笔记

作者: 吴十三和小可爱的札记 | 来源:发表于2020-02-02 19:48 被阅读0次

    ggplot2的提供了海量的默认配色方案和DIY配色选项,根据色彩显示类型一般分为连续型(渐变色)和离散型(差异色)两种。

    连续型标尺:

    根据颜色梯度色彩数量划分,共有三类连续型颜色梯度(即渐变色):

    1. scale_colour_gradient()和scale_fill_gradient():双色梯度。顺序由低到高,参数low 和high 用于控制此梯度两端颜色;
    ggplot() + geom_point(data = mtcars, 
                          aes(x = mpg, y = disp, color = qsec)) + 
      scale_colour_gradient(low = "green", high = "red")
    
    scale_colour_gradient.png
    ggplot() + geom_point(data = mtcars, 
                          aes(x = mpg, y = disp, color = qsec)) + 
      scale_colour_gradient(low = "lightgreen", high = "darkgreen")
    
    scale_colour_gradient.png
    1. scale_colour_gradient2()和scale_fill_gradient2():三色梯度。顺序为低-中-高,参数low、mid和high 用于控制此梯度颜色,参数midpoint 设定中点值;
    ggplot() + geom_point(data = mtcars, 
                          aes(x = mpg, y = disp, color = qsec)) + 
      scale_colour_gradient2(low = "blue", mid = "black", high = "red",
                             midpoint = 18)
    
    scale_colour_gradient.png
    1. scale_colour_gradientn()和scale_fill_gradientn():自定义的n 色梯度。此标度需要赋给参数colours 一个颜色向量。不加其他参数的话,这些颜色将依照数据的范围均匀地分布。如果你需要让这些值不均匀地分布,则可以使用参数values。如果参数rescale 的值是TRUE(默认),则values 应在0 和1 之间取值,如果rescale 取值FALSE,则values 应在数据范围内取值。

    离散型标尺

    • hue系列是在hcl 色轮选取均匀分布的色相来生成配色板。

      1. h - range of hues to use, in [0, 360]
      2. c - chroma (intensity of colour), maximum value varies depending on combination of hue and luminance.
      3. l - luminance (lightness), in [0, 100]
    • colorbrewer.org系列

    Viridis系列

    刻度提供的颜色图在颜色和黑白方面在感觉上是一致的,因此色盲也可以感知到所映射的数据的变化。
    scale_colour_viridis_d():discrete

    scale_colour_viridis_c():continue

    • option:可选颜色选项,包括 "magma" (or "A"), "inferno" (or "B"), "plasma" (or "C"), "viridis" (or "D", the default option) and "cividis" (or "E").
    dsamp <- diamonds[sample(nrow(diamonds), 1000), ]
    p <- ggplot(dsamp, aes(carat, price)) +
      geom_point(aes(colour = clarity))
    p + scale_colour_viridis_d(option = "inferno")
    
    scale_colour_gradient.png

    colorbrewer.org系列

    下面4个配色参数的方案来源于colorbrewer.org,主要用于离散变量的分组,但有时在连续变量中也有不俗的表现。scale_colour_brewer(),scale_fill_brewer(),scale_colour_distiller(),scale_fill_distiller()

    palette

    colorbrewer.org的默认配色方案用RColorBrewer::display.brewer.all()查看

    • Diverging:BrBG, PiYG, PRGn, PuOr, RdBu, RdGy, RdYlBu, RdYlGn, Spectral

    • Qualitative:Accent, Dark2, Paired, Pastel1, Pastel2, Set1, Set2, Set3

    • Sequential:Blues, BuGn, BuPu, GnBu, Greens, Greys, Oranges, OrRd, PuBu, PuBuGn, PuRd, Purples, RdPu, Reds, YlGn, YlGnBu, YlOrBr, YlOrRd

    scale_colour_brewer(palette = "BrBG") 表示用BrBG默认配色。

    direction

    • scale_colour_brewer(direction = 1)表示正向

    • scale_colour_brewer(direction = -1)表示反向

    aesthetics

    • scale_colour_brewer(aesthetics = c("colour"))表示将新的配色方案应用于colour映射中。

    • scale_colour_brewer(aesthetics = c("fill"))表示将新的配色方案应用于fill映射中。

    DIY 配色

    关于配色,ggplot2提供了 scale_colour_manual(), scale_fill_manual()函数用于Diy配色。

    • palette:调色板设计,里面包含很多颜色,可供values = 调用。

    • values:色彩值,可以是cols <- c("a" = "red", "b" = "blue", "c" = "darkgreen"),此时分组变量和色彩映射一一对应;也可以是cols <- c( "red", "blue", "darkgreen"),此时分组变量和色彩依靠排列顺序进行映射。

    • aesthetics:颜色覆盖的视觉属性,一般是colour 和 fill两种。

    • labels:分组标签,各个颜色代表的组别。

    • name:legend的名字。

    • breaks:设置组别,元素需要和labels一样多。

    • limits:影响的是图形上显示的元素,如果limits里面有4个元素,但实际只有2个分组变量,那么会出现两个NA值。

    cols <- c("8" = "red", "4" = "blue", 
              "6" = "darkgreen", "10" = "orange")
    ggplot() + geom_point(data = mtcars, 
                          aes(x = mpg, y = disp, color = factor(cyl))) + 
      scale_colour_manual(values = cols,
                          breaks = c("4", "6", "8"),
                          labels = c("four", "six", "eight"),
                          name = "cyl")
    
    scale_colour_gradient.png

    用 aesthetics指定改变的颜色是哪一个映射,shape = 21是空心圆,可以用fill参数。 此时,在 scale_colour_manual() 中指定应用的映射为fill,则只有fill色彩发生了变化,并生成了一个新的legend。

    ggplot() + geom_point(data = mtcars, 
                          aes(x = mpg, y = disp, 
                              color = factor(cyl),
                              fill = factor(cyl)),
                              shape = 21,
                              size = 5) + 
      scale_colour_manual(values = cols,
                          breaks = c("4", "6", "8"),
                          labels = c("four", "six", "eight"),
                          name = "cyl",
                          aesthetics = "fill")
    
    scale_colour_gradient.png

    相关文章

      网友评论

        本文标题:ggplot2 配色笔记

        本文链接:https://www.haomeiwen.com/subject/xrmqxhtx.html