當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R Palettes 調色板


R語言 Palettes 位於 grDevices 包(package)。

說明

創建 n 連續顏色的向量。

用法

hcl.colors(n, palette = "viridis", alpha = NULL, rev = FALSE, fixup = TRUE)
hcl.pals(type = NULL)

rainbow(n, s = 1, v = 1, start = 0, end = max(1, n - 1)/n,
        alpha, rev = FALSE)
heat.colors(n, alpha, rev = FALSE)
terrain.colors(n, alpha, rev = FALSE)
topo.colors(n, alpha, rev = FALSE)
cm.colors(n, alpha, rev = FALSE)

參數

n

調色板中的顏色數量 ( )。

palette

有效的調色板名稱(hcl.pals() 之一)。該名稱與可用調色板列表相匹配,忽略匹配中的大小寫、空格、破折號等。

alpha

[0,1] 範圍內的 alpha-transparency 級別(0 表示透明,1 表示不透明),請參閱參數alphahsvhcl, 分別。
A missing,即未明確指定alpha相當於alpha = NULL,這確實不是添加不透明代碼("FF") 到各個顏色十六進製代碼。

rev

邏輯指示顏色順序是否應該顛倒。

fixup

邏輯指示是否應將結果顏色校正為 [0,1] 中的 RGB 坐標,請參閱 hcl

type

要列出的調色板類型: "qualitative""sequential""diverging""divergingx"NULL 列出所有調色板。

s , v

‘saturation’ 和 ‘value’ 用於完成 HSV 顏色說明。

start

彩虹開始處 [0,1] 中的(校正後的)色調。

end

彩虹結束處 [0,1] 中的(校正後的)色調。

細節

所有這些函數(輔助函數 hcl.pals 除外)都會創建 n 連續顏色的向量,或者基於 HSV 顏色空間(彩虹、熱度、地形、地形和 cyan-magenta 顏色),或者基於感知HCL 色彩空間。

HSV (hue-saturation-value) 是 RGB (red-green-blue) 空間的簡單轉換,因此它是許多軟件係統中調色板的便捷選擇(另請參見 hsv )。然而,HSV 顏色捕捉感知屬性色調、色彩/飽和度/色度和亮度/亮度/輝度/值的效果很差,因此相應的調色板通常不是統計圖形和數據可視化的良好選擇。

相比之下,HCL (hue-chroma-luminance) 顏色更適合捕捉人類色彩感知(另請參見hcl),並且可以基於 HCL 坐標導出更好的調色板。從概念上講,通常區分三種類型的調色板:

  • 定性:用於編碼分類信息,即沒有可用的特定類別順序並且每種顏色應獲得相同的感知權重。

  • 順序:用於編碼有序/數字信息,即顏色從高到低(反之亦然)。

  • 發散:設計用於圍繞中心中性值編碼數字信息,即顏色從中性發散到兩個極端。

hcl.colors 函數提供了 colorspace 包中預先指定調色板的基本且精簡的實現。除了上述類型之外,這些函數還區分了 “diverging” 調色板,其中兩個臂被限製為相當平衡,而不是靈活的 “divergingx” 調色板,後者不受任何限製地組合兩個連續調色板。後一組還包括 cividis 調色板,因為它基於兩種不同的色調(藍色和黃色),但它實際上是一個順序調色板(從暗到亮)。

可以使用 hcl.pals 函數查詢所有可用 HCL 調色板的名稱,並且在示例中它們也通過顏色樣本進行可視化。許多調色板與其他各種包中的同名調色板非常相似(包括 RColorBrewerrcartocolorviridisscico 等)。

默認的 HCL 調色板是廣泛使用的 viridis 調色板,它是一個順序調色板,具有相對較高的色度,因此它也可以作為定性調色板使用。然而,雖然 viridis 是一個相當強大的默認調色板,但更適合大多數可視化的 HCL 調色板。

例如,"Dark 3" 適用於最多 5 組的著色點或線,"YlGnBu" 是類似於 "viridis" 的順序調色板,但具有對齊的色度/亮度,"Green-Brown""Blue-Red 3" 是 colorblind-safe不同的調色板。

palette.colors 函數中提供了更多定性調色板。雖然 hcl.colors 中的定性調色板始終基於相同的色度和亮度組合,但 palette.colors 的色度和亮度在一定程度上有所不同。固定色度/亮度的優點是所得顏色的感知重量更加平衡。允許變化的優點是可以獲得更容易區分的顏色,特別是對於有色覺缺陷的觀看者。

請注意,rainbow 函數實現了(臭名昭著)的彩虹(或噴射)調色板,該調色板在許多軟件包中非常頻繁地使用,但因其許多感知問題而受到廣泛批評。它由 startend 色調指定,其中紅色 = 0、黃色 = 、綠色 = 、青色 = 、藍色 = 和洋紅色 = 。然而,它們在色度和亮度方麵非常華麗且不平衡,可能會導致各種視錯覺。此外,RGB 空間中等距的色調往往聚集在紅、綠、藍三原色上。因此,建議使用 hcl.colors 中合適的調色板,而不是 rainbow

字符向量 cv 包含調色板名稱(對於 hcl.pals )或 n 十六進製顏色代碼(對於所有其他函數)。後者可用於通過圖形函數中的 palette(cv)col = 規範或 par 為後續圖形創建用戶定義的調色板。

例子

require("graphics")

# color wheels in RGB/HSV and HCL space
par(mfrow = c(2, 2))
pie(rep(1, 12), col = rainbow(12), main = "RGB/HSV")
pie(rep(1, 12), col = hcl.colors(12, "Set 2"), main = "HCL")
par(mfrow = c(1, 1))

## color swatches for RGB/HSV palettes
demo.pal <-
  function(n, border = if (n < 32) "light gray" else NA,
           main = paste("color palettes;  n=", n),
           ch.col = c("rainbow(n, start=.7, end=.1)", "heat.colors(n)",
                      "terrain.colors(n)", "topo.colors(n)",
                      "cm.colors(n)"))
{
    nt <- length(ch.col)
    i <- 1:n; j <- n / nt; d <- j/6; dy <- 2*d
    plot(i, i+d, type = "n", yaxt = "n", ylab = "", main = main)
    for (k in 1:nt) {
        rect(i-.5, (k-1)*j+ dy, i+.4, k*j,
             col = eval(str2lang(ch.col[k])), border = border)
        text(2*j,  k * j + dy/4, ch.col[k])
    }
}
demo.pal(16)

## color swatches for HCL palettes
hcl.swatch <- function(type = NULL, n = 5, nrow = 11,
  border = if (n < 15) "black" else NA) {
    palette <- hcl.pals(type)
    cols <- sapply(palette, hcl.colors, n = n)
    ncol <- ncol(cols)
    nswatch <- min(ncol, nrow)

    par(mar = rep(0.1, 4),
        mfrow = c(1, min(5, ceiling(ncol/nrow))),
        pin = c(1, 0.5 * nswatch),
        cex = 0.7)

    while (length(palette)) {
        subset <- 1:min(nrow, ncol(cols))
        plot.new()
        plot.window(c(0, n), c(0, nrow + 1))
        text(0, rev(subset) + 0.1, palette[subset], adj = c(0, 0))
        y <- rep(subset, each = n)
        rect(rep(0:(n-1), n), rev(y), rep(1:n, n), rev(y) - 0.5,
             col = cols[, subset], border = border)
        palette <- palette[-subset]
        cols <- cols[, -subset, drop = FALSE]
    }

    par(mfrow = c(1, 1), mar = c(5.1, 4.1, 4.1, 2.1), cex = 1)
}
hcl.swatch()
hcl.swatch("qualitative")
hcl.swatch("sequential")
hcl.swatch("diverging")
hcl.swatch("divergingx")

## heat maps with sequential HCL palette (purple)
image(volcano, col = hcl.colors(11, "purples", rev = TRUE))
filled.contour(volcano, nlevels = 10,
               color.palette = function(n, ...)
                   hcl.colors(n, "purples", rev = TRUE, ...))

## list available HCL color palettes
hcl.pals("qualitative")
hcl.pals("sequential")
hcl.pals("diverging")
hcl.pals("divergingx")

參考

Wikipedia (2019). HCL color space - Wikipedia, The Free Encyclopedia. https://en.wikipedia.org/w/index.php?title=HCL_color_space&oldid=883465135. Accessed March 26, 2019.

Zeileis, A., Fisher, J. C., Hornik, K., Ihaka, R., McWhite, C. D., Murrell, P., Stauffer, R. and Wilke, C. O. (2020). “colorspace: A toolbox for manipulating and assessing colors and palettes.” Journal of Statistical Software, 96(1), 1-49. doi:10.18637/jss.v096.i01

Ihaka, R. (2003). “Colour for presentation graphics.” Proceedings of the 3rd International Workshop on Distributed Statistical Computing (DSC 2003), March 20-22, 2003, Technische Universität Wien, Vienna, Austria. https://www.R-project.org/conferences/DSC-2003/.

Zeileis, A., Hornik, K. and Murrell, P. (2009). Escaping RGBland: Selecting colors for statistical graphics. Computational Statistics & Data Analysis, 53, 3259-3270. doi:10.1016/j.csda.2008.11.033.

也可以看看

colorspalettegray.colorshsvhclrgbgraycol2rgb 用於轉換為 RGB 數字。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Color Palettes。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。