当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。