ggplot2 配色

ggplot2的提供了海量的默認配色方案和DIY配色選項,根據色彩顯示類型一般分為連續(xù)型(漸變色)和離散型(差異色)兩種。

連續(xù)型標尺:

根據顏色梯度色彩數量劃分,共有三類連續(xù)型顏色梯度(即漸變色):

  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,主要用于離散變量的分組,但有時在連續(xù)變量中也有不俗的表現(xiàn)。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個分組變量,那么會出現(xiàn)兩個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色彩發(fā)生了變化,并生成了一個新的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
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 使用GGPLOT2包進行數據可視化 Introduction簡介 geom_smooth可以用于散點圖,擬合一條直...
    一條很閑的咸魚閱讀 1,046評論 0 0
  • 最近考種數據回來了,今年測得單株,本想用箱線圖表示,后來一并把小提琴圖也做了,順便做個筆記吧。 利用SUMIF對相...
    ShawnMagic閱讀 13,314評論 2 74
  • 其實在看這一章之前,我還不怎么能理解“標度”這個詞到底指什么?,F(xiàn)在有些想法了,比如將一個離散型變量向顏色這個圖形屬...
    TOP生物信息閱讀 1,939評論 0 2
  • 總要開始的~ 尷尬之路促進學習呀! 所以,趕緊補了下git分支的概念,總要有個地方記錄我學習的過程,不求對錯,過程...
    神經摩羯病患者閱讀 295評論 0 0
  • 一切書腰、與書主體分離的書殼都是雞肋、累贅,設計者大概不是讀書者,賣書人不是讀書人。
    薄荷樹是我閱讀 238評論 0 0

友情鏈接更多精彩內容