历练足够的SP们一定遇到过注重细节、精益求精(chuī máo qiú cī)的甲方爸爸。比如提个这样的Comment:这个图的蓝色有点丑,能不能换个Tiffany蓝?
❓那么画图的时候,如何实现想用什么颜色就用什么呢?🤔
解决这个问题,我们先来看看在SAS如何定义颜色。
SAS命名方案如下:
- RGB (red green blue)
- RGBA (red green blue transparency)
- CMYK (cyan magenta yellow black)
- HLS (hue lightness saturation)
- HSV/HSB (hue saturation brightness)
- Gray scale
- SAS color names (from the SAS Registry)
- SAS Color Naming System (CNS)
不愧是SAS,包含这么多命名方案呀👍!那这些都是什么意思呢?
1. RGB
RGB (Red, Green, Blue)颜色就是指通过红、绿、蓝三原色的不同比例混合,可以得到其他所有颜色。
所以RGB颜色代码(a b c)由三个数字组成,每个数字可以在[0,255]内取值。为啥最大只能到255呢?这个相信很多小朋友小学上微机课有听老师讲过,一个字节(byte)=8比特(bit), 8位的二进制数有个, 最小是00000000,最大是11111111,转化成十进制就是0-255(SAS中用十六进制数来指定颜色代码,所以范围为00-FF)。因此,RGB代码可以指定种颜色。
2. RGBA
RGBA (Red, Green, Blue, Transparency)颜色与RGB相比,只多了一个参数alpha,来控制颜色的透明度。
四个分量取值范围也都是:00-FF。对于透明度参数alpha来说,00代表不透明度为0%,FF代表不透明度为100%。
3. CMYK
CMYK(Cyan, Magenta, Yellow, Black)颜色用于四色印刷,基于物体反射光的原理。将等量的青色、品红和黄色混合在一起应该会产生黑色,但由于颜料、染料很难达到严格标准的颜色,混合后只能得到很深的灰色,并不是黑色,所以在印刷中单独加入黑色black,用K来表示黑色,常见的喷墨打印机墨盒就是这四种颜色。
4. HLS
HLS(Hue, Lightness, Saturation)根据色相、明度、饱和度来定义颜色。
Hue取值范围为0-360°,代表一个角度。0°时为蓝色,120°红色,240°为绿色。360°时相当于返回0°为蓝色。明度和饱和度取值范围为0-255。
5. HSV/HSB
HSV(Hue, Saturation, Value)和HLS差不多的。两种色彩模式的色相Hue是完全一样的,饱和度和明度不太一样。
具体来说:
HSV的Saturation控制纯色中混入白色的量,值越大,白色越少,颜色就更纯。所以HSV柱体越靠近中心,颜色越接近白色,越往外越接近于该色相更纯的颜色。
HSV中的Value控制纯色中混入黑色的量,值越大,黑色越少,明度越高。HSV柱体由下而上颜色更亮,底层接近于黑色。
HSL中Saturation表示色彩纯度,值越大,颜色越纯;值越小,颜色越接近于灰色。
HSL中的Lightness控制纯色中混入黑白两种颜色,值越小,颜色越接近黑色,值越大,越接近于白色。
6. Gray Scale
SAS为灰色专门提供了一个灰度颜色代码,用GRAYhh表示, hh是灰色的亮度,是一个十六进制数,范围:00-FF,即提供了256级灰度。
7. SAS Color Names
上面介绍的全部都是用代码表示颜色的,但一般来说,我们平常不太会用以上的方式写SAS程序,不是很可视化,当需要改个颜色时,不知道哪个是哪个,还得解析一下颜色代码😅。所以我们常用的是使用SAS注册表中预先定义好的一些颜色名称来指定颜色。
在SAS中Run以下代码,会在Log窗口输出上百种SAS预先定义好的颜色名称,以及相应的RGB代码。
proc registry list startat="COLORNAMES";
run;
也可以在sas help搜关键字Predefined colors,随意挑选喜欢的颜色用哦!
8. SAS Color Naming System (CNS)
SAS CNS颜色命名系统也是通过Lightness,Saturation,Hue三个分量去控制颜色,有点类似HSL,区别在于CNS的取值都是字符,而且是SAS内置的颜色,范围不多。每个分量的取值如下表。
Lightness | Saturation | Hue |
---|---|---|
Black | Gray | Blue |
Very Dark | Grayish | Purple |
Dark | Moderate | Red |
Medium | Strong | Orange/Brown |
Light | Vivid | Yellow |
Very Light | Green | |
White |
💠黑色 白色 不能使用Saturation、Hue
💠如果不加指定, 那么Lightness默认为Medium, Saturation默认为Vivid
💠灰色无需指定Hue
也就是说除了黑、白、灰之外,设置其他颜色必须指定Hue。
💠无分隔符,依次连接L S H的取值: verylightmoderatepurplishblue
💠以下划线为分隔符:very_light_moderate_purplish_blue
💠以空格为分隔符,加引号:"very light moderate purplish blue"
如果CNS color name已经是SAS注册表中定义好的颜色,那么会优先使用SAS注册表中定义的颜色,部分CNS Color和SAS注册表中的颜色名称相同,但颜色值会有差异。
如下图,深橘色,RGB代码是FF8C00, 这个颜色在SAS注册表中名称为DarkOrange,这个命名也可以是一个CNS color,所以直接如果用CNS颜色代码DarkOrange,会显示FF8C00这个颜色,如下图的前三行。如果想显示CNS color指定的Dark Orange,就需要以来指定颜色,或者,表明这是CNS color命名方案,如下图后三行的显示结果。
以上就是SAS定义颜色的所有命名方案。一般来说,我们使用SAS注册表颜色名称,CNS名称,或者灰度颜色代码就足够了,所见即所得,也方便更好地维护程序。不过回到最初的问题,如果客户指定了某某颜色,或者给我们一张图,需要我们按照所给例图的配色方案画图。这个时候怎么办呢?
💠首先选择一款取色软件,很多软件都带有取色器。比如,WPS、Office的PPT、Snipaste等等;
💠取色之后,获得RGB代码;
💠获得的RGB一般都是十进制的,转化为十六进制,就可以在SAS中定义了。
如果大家画图,对审美要求比较高的话,可以平时积累一些好看的配色方案。分享几个优雅的配色方案!😎
参考文献:SAS/GRAPH(R) 9.3: Reference, Third Edition.