SAS는 다양한 컬러의 이름을 알고있다. "red"와 "brown"은 물론 "aquamarin","chartreuse","khaki","teal"과 같은 색도 알고 있다.
아래의 예는 SGPLOT 프로시저로 "rose"색으로 표시된 scatter plot을 그린것이다.
만약 사용자가 SAS가 인식하고 있는 다른 색의 이름을 알고 싶다면, 다음과 같은 문장을 실행시키면 된다.
그러면 SAS log창에 색의 리스트가 출력된다.
SAS가 지원하는 "창의적인" 이름의 색(Peru, Thistle, Gainsboro 등)은 친숙하지 않다.
다행히도 SAS는 <color-naming scheme> 기능이 있다. 이 기능은 사용자가 "Red","Light Gray","Dark Green"과 같은 색으로 구체적으로 명시할 수 있게 한다. color-naming scheme을 사용하기 위해서, 다음과 같은 카테고리 중에서 하나를 선택한다.
예를 들어, 다음과 같은 타당한 이름이다.
"카테고리 중 하나를 선택하는 것" 중에서 몇가지 예외는, 바람직한 asterisks(*)이다.
만약 사용자가 Black 또는 White를 쓴다면, 당신은 채도(Saturation)나 색상(Hue)을 명시할 수 없다. 비슷하게, 사용자가 Gray를 명시하고 싶다면, 색상은 정할 수 없다.
사용자는 리스트에서 비슷한 색상 두가지를 명시하여 색을 혼합할 수 있다. 임의대로 사용자가 -ish 라는 접미사를 사용하여 색상을감소할 수 있다. 그 예는 다음과 같다.
예를 들어, 아래의 scatter plot은 SAS의 color-naming sheme 기능을 사용해서 그린 것이다.
SAS는 사용자가 red-green-blue (RGB) color model 를 사용해서 색을 표시할 수 있도록 한다. RGB color model은 red, green, blue 요소에 대해서 명시한 컬러의 첨가 모델이다. 각 요소들의 범위는 0(요소의 부재)부터 255(요소의 full 상태)까지이다. 그러므로 색은 red, green, blue와 관련된 삼중항(트리플릿) 색이라고 할 수 있다. 예를 들어,RGB 트리플릿(255, 96, 96)은 red의 최대치와 green, blue의 적은 양을 가진 색으로 나타난다.
RGB model의 문제점은 가독성이다. 만약 프로그래밍 할 때, RGB 트리플릿(255, 96, 96)이라는 색을 사용했다고 하자. 이는 어떤 컬러가 출력될지 아는데 어려움이 있다. 이 컬러는 사실 "Rose"와 동일하지만, 사용자는 이 결과를 미리 예측하는게 힘들 것이다.
RGB 트리플릿은 16진법(hexadecimal integer)에 의해 함축적으로 나타난다. 접두사 CX는 SAS가 정수를 색으로 해석할 수 있게 한다. 사용자는 편리한 reference chart that lists SAS colors and their hexadecimal values를 이용해서 "Rose"와 같은 색의 16진법 표현을 발견할 수 있다.
차트에서 "Rose"의 RGB 컬러는 CXFF6060이다. 이 값은 두자리로 끊어 읽는다.
계속해서, 아래 문장은 이 글의 첫번째 이미지를 재 출력 한것이다.
사용자가 하드코어한 프로그래머라면, 이미 SAS macro를 이용해서 RGB 값을 16진법 수로 전환하는 것을 생각했을지도 모른다. 스스로 macro를 설계하고 싶다면 당장 그만둬라.
사용자는 아래의 SAS macro를 사용해서 트리플릿 RGB 컬러를 16진법의 값으로 생성할 수 있다. PUT 함수를 사용하면 DATA step안에서 16진법을 설계하기 매우 쉽다. 그러나 DATA step 밖에서 사용되는 "in-line" 스트링을 설계하기 위해서는 macro language를 살짝 바꿔야 한다. SGPLOT 프로시저에 COLOR= 옵션을 명시하기위해 아래의 macro 문을 사용하면 된다.
(255, 96, 96)는 "rose"와 같은 색이므로, 이 글의 첫번째 그래프와 같은 결과이다.
[원본 URL] http://twr.kr/33Y
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.