ggplot2 配色

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
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,547评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,399评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,428评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,599评论 1 274
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,612评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,577评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,941评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,603评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,852评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,605评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,693评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,375评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,955评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,936评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,172评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,970评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,414评论 2 342

推荐阅读更多精彩内容