GCHART 프로시저는 다양한 고해상도 그래프를 그릴 때 사용하는 프로시저로 자원하는 도표의 종류에는 여섯가지가 있습니다.
1. 수직막대도표 ( vertical bar chart )
주어진 중간점을 기준으로 해당 구간의 빈도나 퍼센티지를 수직막대 형식으로 표현합니다.
2차원 도표가 필요하면 VBAR, 3차원 도표가 필요하면 VBAR3D를 사용합니다.
2. 수평 막대 도표 ( horizontal bar chart)
수직막대도표의 수평판이며 필요하다면 몇 가지 통계량의 출력을 덧붙일 수 있습니다. 2차원 도표가 필요하면 HBAR, 3차원 도표가 필요하다면 HBAR3D를 사용합니다.
3. 블록 도표 ( block chart )
수직 막대도표의 변형으로 2차원 막대 대신 3차원 사각기둥을 흉내 낸 모습으로 도표를 표현하여 입체감을 표현하도록 한 점이 특징입니다. BLOCK문장으로 그립니다.
4. 파이 도표 ( pie chart )
전체를 둥그런 파이로 생각하여 변수 수준에 따라 조각 낸 형태로 만드는 도표입니다. 2차원 도표가 필요하다면 PIE이고 3차원 도표가 필요하다면 PIE3D를 사용합니다.
5. 도넛 도표 ( donut chart )
가운데가 구멍이 난 파이도표라고 생각합니다. DONUT 문장을 사용합니다.
6. 별도표 ( start chart )
파이도표의 변형으로 한 조각이 전체에서 차지하는 비율뿐 아니라 평균 등의 값을 한눈에 비교해 볼 수 있도록 고안된 도표입니다. STAR 문장으로 그릅니다.
proc gchart data= SASDATASET;
vbar | vbar3d variables / options;
hbar | hbar3d variables / options;
block variables / options ;
pie | pie3d variables / options ;
donut variables / options ;
star variables / options ;
by variables;
run;
quit;
Syntax에서 '3d'가 붙은 명령은 전부 3차원 도표를 만들고자 할 때 사용합니다. 마지막의 'quit'문을 통해서 GCHART 프로시저를 종료합니다.
설문지에서 흔히 볼 수 있는 형태인 빈도자료를 기초로 수직막대도표를 그려보고자 합니다.
빈도자료에서는 변수가 취하는 값, 즉 수준(level)이 이미 정해져 있습니다.
예를 들어, A대학교에서 통계학과, 수학과, 컴퓨터공학과의 세 학과에 대한 2020학번과 2021학번 학생들에 대한 남녀 구성비율을 조사하여 그 결과를 수직막대도표(vertical bar chart)로 나타내고 싶다고 가정합니다.
data students;
input dept $ year gender $ count;
datalines;
stat 2020 m 30
stat 2020 f 30
stat 2021 m 45
stat 2021 f 15
math 2020 m 10
math 2020 f 40
math 2021 m 20
math 2021 f 30
comsci 2020 m 40
comsci 2020 f 30
comsci 2021 m 30
comsci 2021 f 50
run;
sas의 자료의 이름은 'students'로 주었고, 변수 이름으로 dept(과), year(입학연도), gender(성별)를 선정합니다. dept는 문자변수로 'stat','math','comsi'의 세 값을 갖습니다. year는 2020,2021 두 숫자 값을 갖습니다. gender는 M(남)과 F(여)의 두 문자값을 갖습니다. 그리고 count변수에 해당 조합에 속하는 관측의 빈도(frequency)가 입력되어 있습니다.
과별 빈도를 기초로 3차원 수직막대도표를 그립니다.
proc gchart data = students;
vbar3d dept / freq= count;
run;
막대의 모양, 막대 간격, 막대의 순서, 반응축의 지표값 등을 변경해 새로운 도표를 그려보고자 합니다.
proc gchart data = students;
vbar3d dept / freq=count shape = cylinder space=10 raxis=0 to 200 by 40
caxis=cornflowerblue ctext=bip coutline=red midpoints="math" "comsci" "stat";
run;
수평축에서 변수값이 인쇄되는 지점은 MIDPOINTS(중간점) 구문으로 조절합니다.
이 구문의 사용법은 DO 문장의 용법과 동일합니다. 예를 들어, 숫자변수에 대하여 0,20,40,60을 지정하려면 다음과 같이 합니다.
MIDPOINTS = 0 to 60 by 20
문자변수의 경우 MIDPOINTS의 구문이 없으면 영어 자모순으로 출력됩니다.
바꿀려면 큰따옴표로 둘러친 문자를 나열합니다. 예를 들어, dept에 대한 막대들의 출력 순서를 "math" "comsci", "stat"순서로 하려면 쉼표 없이 다음과 같이 지정합니다.
MIDPOINTS = "math" "comsci" "stat" 순서로 하려면 쉼표 없이 아래와 같이 지정합니다.
GCHART 프로시저에서 수직축은 RAXIS로 지정합니다.
RAXIS는 반응축 (response axis)를 의미합니다. RAXIS 구문은 지표선의 위치를 조절하는데 사용됩니다.
예를 들어, 0부터 160까지 10단위로 지표값을 표시하고 싶다면 다음과 같이 지정합니다.
RAXIS = 0 to 160 by 10
색상선택 지정에서 자주 사용되는 것은 아래의 세가지 입니다.
색상 지정에 사용하는 단어는 일상 영어에서 사용하는 그래프입니다.
CAXIS = color : 축 색깔
COUTLINE = color : 막대의 윤곽선 색깔
CTEXT = color : 도표에 나타난 글자의 색깔
3차원 막대도표에서 막대의 모양을 선택할 때는 'SHAPE='지정을 사용합니다.
디폴트는 BLOCK입니다.
세 과에 대한 남/여 비율
성별 막대가 입학연도에 따라 다시 구분되어 있습니다. 세 변수에 대한 도표를 만드는 것으로 이 경우 변수 year를 부그룹(subgroup)이라고 합니다.
그룹화 처리를 하는데 필요한 구문에는 세 가지가 있습니다.
group = variable : 그룹변수 지정
gspace = n : 그룹간격 지정
subgroup = variable : 부그룹변수 지정
gspace는 그룹 사이의 간격을 지정합니다. 그룹 간격을 2로 잡아 그래프를 그려보고자 합니다.
proc gchart data = students;
vbar3d gender / freq=count shape=block group=dept gspace=2;
run;
분류자료란 변수가 취하는 값은 고정되어 있으나 반응값이 연속인 데이터로 실험통계 분야에서 이런 자료가 많이 나타납니다.
예를 들어, 세 품종(variety)의 사과나무 앞에 존재하는 인산(phospho)의 양을 측정하려고 합니다.
각 품종의 사과나무에서 잎 5개씩을 골라 인산의 양을 측정한 결과의 데이터는 아래와 같습니다.
data apple;
do variety = 1 to 3;
input phospho @@; output;
end;
datalines;
0.35 0.65 0.60
0.40 0.70 0.80
0.58 0.90 0.75
0.50 0.84 0.73
0.47 0.79 0.66
run;
다음의 데이터를 수직막대도표로 각 품종별 평균 인산량이 얼마인가를 시각적으로 나타냅니다.
이러한 연속자료에 대하여 막대도표를 그릴 경우 사실상 반응변수가 연속이지만 이산형태로 데이터를 얻었음을 기억해야 합니다. 이같이 연속 숫자변수가 취하는 값을 이산으로 처리하려면 만드시 DISCRETE 구문을 입력해야 합니다. 연속 반은 변수는 SUMVAR로 지정하며 사용 가능한 통계량은 합과 평균의 두 종류가 있고 이는 'type = '로 지정합니다.
type = mean sumvar = variable : 평균 도표
type = sum sumvar = variable : 합도표
proc gchart data = sasdataset;
vbar variables / discrete type= mean | sum sumvar=variable;
run;
분류자료 apple에서 각 수준별 관측값의 평균을 기초로 수평막대도표를 그리려면 아래와 같은 코드가 필요합니다.
proc gchart data=apple;
vbar3d variety / discrete space=8 type=mean sumvar=phospho;
run;
막대도표에서 막대가 차지하는 부분을 파이 조각으로 나타낸 것이 파이도표입니다. 각 파이 조각이 대표하는 수준값 레이블의 위치는 SLICE로 지정합니다.
SLICE = NONE : 수준 값을 표시하지 않음
SLICE = ARROW : 수준 값을 파이 밖에서 화살표로 연결
SLICE = INSIDE : 수준 값을 파이 안에 넣음
SLICE = OUTSIDE : 수준 값을 파이 밖에 표시
파이 조각이 차지하는 퍼센티지를 나타낼 위치는 'PERCENT ='로 지정합니다.
용법은 'SLICE = '의 경우와 같습니다.
'VALUE = '구문에서는 각 파이 조각에 대한 통계량, 즉 빈도나 퍼센티지, 합 등 값을 표시할 위치를 조절합니다.
[ 조각에 대한 레이블 위치 조정 ]
slice = none | arrow | inside | outside
percent = none | arrow | inside | outside
value = none | arrow | inside | outside
proc gchart data = students;
pie dept / freq=count explode="stat" slice=arrow percent=inside value=inside;
run;
통계학과에 대한 조각이 약간 틈이 난 채 돌출되어 있는 파이 도표입니다.
파이 도표에서 특정 조각을 강조할 때 흔히 돌출시키려는 조각은 EXPLODE 구문에 나열하면 됩니다.
EXPLODE 구문은 MIDPOINTS 구문의 용법과 같습니다.
OTHER = n : 아주 작은 조각을 합칠 때 지정
INVISIBLE = values : 특정 조각을 그리고 싶지 않을 때 지정
빈도나 퍼센티지가 주어진 값 n 이하일 때 묶어 '기타 ( other )'라는 새로운 수준을 만들고 싶을 때 'OTHER = '구문을 사용합니다. n값은 현재 그리는 파이도표가 어떤 통계량을 기준으로 하느냐에 따라 빈도나 퍼센티지로 줍니다.
INVISIBLE은 특정 파이 조각을 그리지 않게 할 때 지정합니다.
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.