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 |
有效的調色板名稱( |
alpha |
[0,1] 範圍內的 alpha-transparency 級別(0 表示透明,1 表示不透明),請參閱參數 |
rev |
邏輯指示顏色順序是否應該顛倒。 |
fixup |
邏輯指示是否應將結果顏色校正為 [0,1] 中的 RGB 坐標,請參閱 |
type |
要列出的調色板類型: |
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 調色板的名稱,並且在示例中它們也通過顏色樣本進行可視化。許多調色板與其他各種包中的同名調色板非常相似(包括 RColorBrewer
、 rcartocolor
、 viridis
、 scico
等)。
默認的 HCL 調色板是廣泛使用的 viridis 調色板,它是一個順序調色板,具有相對較高的色度,因此它也可以作為定性調色板使用。然而,雖然 viridis 是一個相當強大的默認調色板,但更適合大多數可視化的 HCL 調色板。
例如,"Dark 3"
適用於最多 5 組的著色點或線,"YlGnBu"
是類似於 "viridis"
的順序調色板,但具有對齊的色度/亮度,"Green-Brown"
或 "Blue-Red 3"
是 colorblind-safe不同的調色板。
palette.colors
函數中提供了更多定性調色板。雖然 hcl.colors
中的定性調色板始終基於相同的色度和亮度組合,但 palette.colors
的色度和亮度在一定程度上有所不同。固定色度/亮度的優點是所得顏色的感知重量更加平衡。允許變化的優點是可以獲得更容易區分的顏色,特別是對於有色覺缺陷的觀看者。
請注意,rainbow
函數實現了(臭名昭著)的彩虹(或噴射)調色板,該調色板在許多軟件包中非常頻繁地使用,但因其許多感知問題而受到廣泛批評。它由 start
和 end
色調指定,其中紅色 = 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.
也可以看看
colors
、 palette
、 gray.colors
、 hsv
、 hcl
、 rgb
、 gray
和 col2rgb
用於轉換為 RGB 數字。
相關用法
- R axisTicks 計算漂亮的軸刻度
- R hcl HCL 顏色規格
- R quartzFonts 石英字體
- R as.graphicsAnnot 強製圖形注釋對象
- R xyTable (x,y) 點的重數,例如,對於向日葵圖
- R dev.interactive 當前圖形設備是否具有交互性?
- R chull 計算一組點的凸包
- R convertColor 在色彩空間之間轉換
- R X11Fonts X11 字體
- R plotmath R 中的數學注釋
- R dev.capture 將設備輸出捕獲為光柵圖像
- R dev.size 查找設備表麵的尺寸
- R pdf.options 設置/查看 pdf 參數默認值的輔助函數
- R densCols 平滑密度圖的顏色
- R windows Windows 圖形設備
- R rgb RGB 顏色規格
- R check.options 設置帶有一致性檢查的選項
- R msgWindow 操縱窗口
- R dev.flush 保持或刷新屏幕圖形設備上的輸出
- R n2mfrow 根據繪圖數計算默認“mfrow”
- R dev 控製多個設備
- R hsv HSV 顏色規格
- R postscript PostScript 圖形
- R pdf PDF圖形設備
- R xyz.coords 提取繪圖結構
注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Color Palettes。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。