歷練足夠的SP們一定遇到過注重細(xì)節(jié)、精益求精(chuī máo qiú cī)的甲方爸爸。比如提個(gè)這樣的Comment:這個(gè)圖的藍(lán)色有點(diǎn)丑,能不能換個(gè)Tiffany藍(lán)?

?那么畫圖的時(shí)候,如何實(shí)現(xiàn)想用什么顏色就用什么呢???
解決這個(gè)問題,我們先來看看在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)顏色就是指通過紅、綠、藍(lán)三原色的不同比例混合,可以得到其他所有顏色。
![]() |
![]() |
|---|
所以RGB顏色代碼(a b c)由三個(gè)數(shù)字組成,每個(gè)數(shù)字可以在[0,255]內(nèi)取值。為啥最大只能到255呢?這個(gè)相信很多小朋友小學(xué)上微機(jī)課有聽老師講過,一個(gè)字節(jié)(byte)=8比特(bit), 8位的二進(jìn)制數(shù)有個(gè), 最小是00000000,最大是11111111,轉(zhuǎn)化成十進(jìn)制就是0-255(SAS中用十六進(jìn)制數(shù)來指定顏色代碼,所以范圍為00-FF)。因此,RGB代碼可以指定
種顏色。
2. RGBA
RGBA (Red, Green, Blue, Transparency)顏色與RGB相比,只多了一個(gè)參數(shù)alpha,來控制顏色的透明度。
四個(gè)分量取值范圍也都是:00-FF。對(duì)于透明度參數(shù)alpha來說,00代表不透明度為0%,F(xiàn)F代表不透明度為100%。
3. CMYK
CMYK(Cyan, Magenta, Yellow, Black)顏色用于四色印刷,基于物體反射光的原理。將等量的青色、品紅和黃色混合在一起應(yīng)該會(huì)產(chǎn)生黑色,但由于顏料、染料很難達(dá)到嚴(yán)格標(biāo)準(zhǔn)的顏色,混合后只能得到很深的灰色,并不是黑色,所以在印刷中單獨(dú)加入黑色black,用K來表示黑色,常見的噴墨打印機(jī)墨盒就是這四種顏色。

4. HLS
HLS(Hue, Lightness, Saturation)根據(jù)色相、明度、飽和度來定義顏色。
Hue取值范圍為0-360°,代表一個(gè)角度。0°時(shí)為藍(lán)色,120°紅色,240°為綠色。360°時(shí)相當(dāng)于返回0°為藍(lán)色。明度和飽和度取值范圍為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為灰色專門提供了一個(gè)灰度顏色代碼,用GRAYhh表示, hh是灰色的亮度,是一個(gè)十六進(jìn)制數(shù),范圍:00-FF,即提供了256級(jí)灰度。


7. SAS Color Names
上面介紹的全部都是用代碼表示顏色的,但一般來說,我們平常不太會(huì)用以上的方式寫SAS程序,不是很可視化,當(dāng)需要改個(gè)顏色時(shí),不知道哪個(gè)是哪個(gè),還得解析一下顏色代碼??。所以我們常用的是使用SAS注冊(cè)表中預(yù)先定義好的一些顏色名稱來指定顏色。
在SAS中Run以下代碼,會(huì)在Log窗口輸出上百種SAS預(yù)先定義好的顏色名稱,以及相應(yīng)的RGB代碼。
proc registry list startat="COLORNAMES";
run;

也可以在sas help搜關(guān)鍵字Predefined colors,隨意挑選喜歡的顏色用哦!

8. SAS Color Naming System (CNS)
SAS CNS顏色命名系統(tǒng)也是通過Lightness,Saturation,Hue三個(gè)分量去控制顏色,有點(diǎn)類似HSL,區(qū)別在于CNS的取值都是字符,而且是SAS內(nèi)置的顏色,范圍不多。每個(gè)分量的取值如下表。
| 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默認(rèn)為Medium, Saturation默認(rèn)為Vivid
??灰色無(wú)需指定Hue
也就是說除了黑、白、灰之外,設(shè)置其他顏色必須指定Hue。
??無(wú)分隔符,依次連接L S H的取值: verylightmoderatepurplishblue
??以下劃線為分隔符:very_light_moderate_purplish_blue
??以空格為分隔符,加引號(hào):"very light moderate purplish blue"
如果CNS color name已經(jīng)是SAS注冊(cè)表中定義好的顏色,那么會(huì)優(yōu)先使用SAS注冊(cè)表中定義的顏色,部分CNS Color和SAS注冊(cè)表中的顏色名稱相同,但顏色值會(huì)有差異。
如下圖,深橘色,RGB代碼是FF8C00, 這個(gè)顏色在SAS注冊(cè)表中名稱為DarkOrange,這個(gè)命名也可以是一個(gè)CNS color,所以直接如果用CNS顏色代碼DarkOrange,會(huì)顯示FF8C00這個(gè)顏色,如下圖的前三行。如果想顯示CNS color指定的Dark Orange,就需要以來指定顏色,或者
,表明這是CNS color命名方案,如下圖后三行的顯示結(jié)果。

以上就是SAS定義顏色的所有命名方案。一般來說,我們使用SAS注冊(cè)表顏色名稱,CNS名稱,或者灰度顏色代碼就足夠了,所見即所得,也方便更好地維護(hù)程序。不過回到最初的問題,如果客戶指定了某某顏色,或者給我們一張圖,需要我們按照所給例圖的配色方案畫圖。這個(gè)時(shí)候怎么辦呢?
??首先選擇一款取色軟件,很多軟件都帶有取色器。比如,WPS、Office的PPT、Snipaste等等;
??取色之后,獲得RGB代碼;
??獲得的RGB一般都是十進(jìn)制的,轉(zhuǎn)化為十六進(jìn)制,就可以在SAS中定義了。
如果大家畫圖,對(duì)審美要求比較高的話,可以平時(shí)積累一些好看的配色方案。分享幾個(gè)優(yōu)雅的配色方案!??



參考文獻(xiàn):SAS/GRAPH(R) 9.3: Reference, Third Edition.

