每天学习一点R:12.颜色设置
R语言中的颜色
R语言绘图中与颜色相关的参数:
col,绘图使用的颜色;
col.axis,坐标轴字符颜色;
col.lab,x,y坐标标题颜色;
col.main,标题颜色;
col.sub,副标题颜色;
fg,绘图前景色,包括坐标轴,各类boxes;
bg,绘图背景色。
可以直接通过颜色的名字或十六进制标识指定绘图所需的颜色,如需要指定颜色的元素是多个时,将颜色输入为一个向量,之后依次匹配颜色。
d <- data.frame(x = c(1:10),y = rnorm(10))
#设置点的颜色为红色
plot(d, col = "red", pch = 19, cex = 2)
自定义颜色
除了直接输入颜色的名字之外,R还支持颜色的自定义。
rgb()函数
rgb(red, green, blue, alpha, names= NULL, maxColorValue = 1)
rgb()函数利用红绿蓝三色定义一种新的颜色,red、green、blue3个参数分别制定3个颜色的成分,数值在0至maxColorValue之间,数值越大表示颜色的成分越高。
alpha表示透明度,数值同样在0至maxColorValue之间,0表示完全透明,最大值表示完全不透明。
names指定生成颜色的名称。
hsv()函数
hsv(h = 1, s = 1, v = 1, gamma = 1, alpha)
h、s、v三个参数分别对应色调、饱和度和纯度,取值于区间[0, 1]。
参数gamma表示伽玛校正3(Gamma Correction)。
alpha代表透明度,取值在区间[0,1]上。
hcl()函数
hcl(h = 0, c = 35, l = 85, alpha, fixup = TRUE)
h取值在区间[0,360]上,可以将它想象为一个角度:0表示红色,120表示绿色,240表示蓝色,中间的都是过渡色。
l取值在区间[0, 100]上,取值越大生成的颜色越亮。
c取值受h和l限制,alpha表示透明度。
fixup表示是否修正生成的颜色值,之所以要修正,是因为有些搭配生成的RGB颜色(r, g, b)可能出现某一个元素超过1的情形。
gray()函数
gray(level)
gray()函数只有一个level参数,表示灰度水平,取值在0~1之间,0表示纯黑色,1表示纯白色。
连续梯度颜色
除了指定与有限参数匹配的颜色之外,有时还需要指定一个连续的颜色变化以表示数值在指定区间内的位置。
#彩虹色
rainbow(n, s = 1, v = 1, start = 0, end= max(1, n - 1)/n, gamma = 1)
#从红色渐变到黄色再变到白色
heat.colors(n, alpha = 1)
#从绿色渐变到黄色再到棕色最后到白色
terrain.colors(n, alpha = 1)
#从青色渐变到白色再到粉红色
topo.colors(n, alpha = 1)
#从蓝色渐变到青色再到黄色最后到棕色
cm.colors(n, alpha = 1)
n设定颜色梯度中色块的数目,aplha表示透明度。
彩虹色设置中,start和end代表颜色的起始和终止,红色(red)为0,黄色(yellow)为1/6、绿色(green)为2/6、青色(cyan)为3/6,蓝色(blue)为4/6,紫色(magenta)为5/6.
RColorBrewer
除了手动设置颜色以外,R还提供了一系列设置好的配色方案已备用户使用,其中使用最为广泛的就是RColorBrewer包。
install.packages("RColorBrewer")
library(RColorBrewer)
RColorBrewer包提供了多个设置好的配色方案,使用brewer.pal()函数调用。
brewer.pal(n,names)
n为需要颜色的个数,names为配色方案的名称。
data <- replicate(8,rnorm(10, 10, sd = 1.2))
#调用Set3配色的前8个颜色
boxplot(data, col= brewer.pal(8,"Set3"))
当需要的颜色数目大于配色方案给出的颜色数目时,使用colorRampPalette()命令自动生成不足的颜色。
#对之前生成的数据进行统计,形成新的数据表
data1 <- table(round(data))
#制作配色方案
col1 <- colorrampPalette(brewer.pal(8,"Dark2))(length(data1))
#使用新的配色方案绘图
pie(data1, col = col1)
如只想选择配色方案中的一个特定颜色,可以使用[]进行指定,[]内为指定颜色在配色方案中的位置。
col2 <- brewer.pal(9,"Set3)[6]
公众号后台回复“R颜色”获得颜色名称、十六进制标识和RGB对照表以及RColorBrewer包配色方案。
扩展阅读