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