BookmarkSubscribeRSS Feed

[SAS 활용 노하우] GPLOT

Started ‎10-13-2021 by
Modified ‎10-13-2021 by
Views 3,991

 

두 변수 간의 산점도를 포함한 다양한 형태의 2차원 그래프를 고해상도 그래픽 모드로 그리려면 GPLOT을 이용하면 됩니다.

GPLOT 프로시저에서 제공하는 그래프의 종류는

- 산점도(scatter plot)

- 오버레이 플롯(overlay plot) : 여러 개의 그래프를 겹쳐서 하나로 그린 플롯

- 거품도(bubble plot) 등이 있습니다.

 

PROC GPLOT DATA=input-data-set
     PLOT y_variable*x_variable/ option(s)
     PLOT2 y_variable*x_variable/ option(s)
     BUBBLE y_variable*x_variable = z_variable / option(s)
      BUBBLE2 y_variable*x_variable = z_variable / option(s)
RUN;

 

산점도는 PLOT, PLOT2 / 거품도는 BUBBLE, BUBBLE2 명령문을 선택해서 사용하면 됩니다.

 

 

-----------------------------------------------------------------------------------------------------------------

 

 

1. 산점도(Scatter Plot)

 

산점도 예시를 들기 위해, 박테리아 데이터를 사용합니다.

아래는 박테리아 데이터 100개의 스몰데이터로 4개의 변수로 구성되어 있습니다.

 

DATA work.bacteria;
INPUT temp div mass life @@;
datalines;
10 3 10 1  20 22 46 0  30 23 20 9   40 42 16 16  50 33 20 6
10 1 11 2  20 01 44 2  30 21 31 10  40 41 14 12  50 31 21 7
10 4 14 3  20 13 32 4  30 24 34 9   40 43 22 14  50 34 24 2
10 2 09 2  20 12 40 6  30 26 29 8   40 42 20 16  50 26 29 4
10 3 08 3  20 09 33 8  30 24 38 11  40 39 23 18  50 34 38 2
10 2 09 1  20 08 38 1  30 25 47 14  40 38 18 12  50 43 44 1
10 4 10 3  20 15 42 3  30 29 30 14  40 35 22 14  50 39 20 8
10 3 11 2  20 20 36 5  30 28 31 9   40 40 26 15  50 28 31 0
10 2 15 3  20 19 35 7  30 26 25 11  40 39 25 17  50 26 15 4
10 4 12 3  20 14 33 2  30 27 22 8   40 36 23 12  50 27 22 3
10 4 13 3  20 12 37 4  30 26 33 9   40 42 27 14  50 26 33 5
10 2 17 1  20 10 39 6  30 25 43 13  40 40 29 16  50 35 43 7
10 3 14 1  20 08 38 4  30 28 34 8   40 38 28 14  50 28 34 4
10 1 12 1  20 06 41 2  30 26 32 14  40 36 21 12  50 21 22 2
10 1 11 4  20 09 32 2  30 27 31 8   40 39 22 12  50 37 31 2
10 1 20 2  20 11 32 5  30 25 32 16  40 41 22 15  50 35 22 5
10 4 09 2  20 13 39 1  30 28 29 12  40 43 19 15  50 28 29 1
10 3 02 2  20 09 32 5  30 26 32 9   40 39 22 15  50 36 22 5
10 2 05 3  20 07 35 4  30 24 35 15  40 37 25 14  50 24 35 4
10 3 08 1  20 05 38 6  30 23 28 9   40 35 28 16  50 33 28 6
;
RUN;

TITLE 'Effect of Temperature in Number' J=C 'and Size of Bacteria Divisions';
Footnote F=SWISSB H=1.5 J=R 'Gplot 1 : Scatter Plot';
SYMBOL I=NEEDLE H=1 VALUE=DOT;
AXIS LABEL=('Size (in Angstroms)');
AXIS2 LABEL=('Divisions');

PROC GPLOT DATA=work.bacteria;
PLOT div*mass / HAXIS=AXIS1 VAXIS=AXIS2 FRAME;
RUN;

 

 

스크린샷_2021-10-13_오후_3.17.08.png

 

 

 

TITLE 명령문을 보면 J(JUSTIFY) 옵션 C(Center)가 지정된 것을 볼 수 있습니다. Justify 옵션에는 Center 이외에도 Right, Left가 있습니다. 그래서 'Effect of Temperature on the Number'을 중앙으로 정렬하고 줄을 바꾸어서 'and Size of Bacteria Divisions'를 중앙으로 정렬시켜 출력하는 것 입니다.

PLOT 명령문으로 산점도를 그릴 수 있습니다. plot의 X축과 Y축을 지정하기 위해 PLOT 명령문에 div*mass로 하였습니다 . 추가적으로 지정한 HAXIS 옵션 VAXIS 옵션은 수평축과 수직축의 이름표와 주눈금값을 부여하는 것입니다. 위의 코드에서는 AXIS 명령문에 의해 정의된 것을 사용하도록 지정하였습니다.

 

 

1.1 OVERLAY 옵션

위의 박테리아 데이터를 overlay 옵션을 알아보겠습니다. overlay옵션은 그래프를 겹쳐그릴 수 있는 옵션입니다.

 
TITLE 'Effect of Temperature in Number' J=C 'and Size of Bacteria Divisions';
FOOTNOTE F = SWISSB H=1.5 J=R 'Gplot 2: Overlay plot';
SYMBOL I=none H=1 VALUE=DOT CV=big;
SYMBOL I=none H=1 VALUE=CIRCLE CV=lightcoral;

PROC GPLOT DATA=work.bacteria;
PLOT div*mass=1 life*mass=2 / overlay FRAME;
RUN;

 스크린샷_2021-10-13_오후_3.30.53.png

 

 

PLOT 명령문에서 OVERLAY 옵션을 지정해서 div 변수와 mass 변수에 대한 산점도 1개와 life 변수와 mass 변수에 대한 산점도 1개를 겹쳐보았습니다.

SYMBOL 명령문이 나타나는데 이는 데이터값들의 기호와 색깔을 다르게 정의하여 사용하기 위한 것입니다.

 

 

1.2 PLOT2

PLOT 명령문에서 OVERLAY 옵션을 지정하여 두 개의 산점도를 겹쳐 그릴 때 각 수직축들이 따로 표시되지 않습니다. 구분해서 표시하고자 할 경우에는 PLOT2 명령문을 사용하면 됩니다. PLOT2 명령문은 두 개의 산점도를 하나의 산점도로 그리되 두 번째 산점도의 수직축을 오른쪽에 표시하고자 할 때 사용하는 명령문으로 반드시 PLOT문과 함께 사용해야 합니다.

 

 

TITLE 'Effect of Temperature in Number' J=C 'and Size of Bacteria Divisions';
FOOTNOTE F = SWISSB H=1.5 J=R 'Gplot 3: Plot using PLOT2';
SYMBOL I=none H=1 VALUE=DOT CV=blue;
SYMBOL I=none H=1 VALUE=CIRCLE CV=blueviolet;

PROC GPLOT DATA=work.bacteria;
PLOT div*mass=1; PLOT2 life*mass=2;
RUN;

 

 

스크린샷_2021-10-13_오후_3.36.35.png

 

 

 

 

2. 특정 변수의 범주별 플롯 그리기

GPLOT 프로시저에서는 특정 변수의 여러 범주별로 서로 다른 형태의 플롯을 함께 작성하는 것도 가능합니다.

 

DATA work.sales;
INPUT month type $ sales @@;
ymd = MDY(month,1,2002);
FORMAT ymd YYMM8.;
CARDS;
 1 Actual   3405   1 Predict  3167
 2 Actual   3851   2 Predict  3967
 3 Actual   5404   3 Predict  5982
 4 Actual   6089   4 Predict  6103
 5 Actual   7012   5 Predict  6581
 6 Actual   7345   6 Predict  7127
 7 Actual   7894   7 Predict  8309
 8 Actual  11230   8 Predict 11451
 9 Actual   9656   9 Predict  9836
10 Actual   8596  10 Predict  7664
11 Actual   7294  11 Predict  7231
12 Actual   5335  12 Predict  4391
;
RUN;

GOPTIONS FTEXT=SWISS;
TITLE 'Actual and Predict value' J=C;
FOOTNOTE H=1.5 J=R 'GPLOT 3 : Plot by type';
SYMBOL I=NONE H=2 VALUE= STAR CV=crimson;
SYMBOL I=SPLINE H=1 VALUE=DOT CV=blue;

PROC GPLOT DATA=work.sales;
PLOT sales*month = type / FRAME;
RUN;

 

스크린샷_2021-10-13_오후_3.45.23.png

 

 

데이터를 살펴보면 변수 type에 의해 매출액(sales)이 구분되어 있다는 것을 알 수 있습니다.

이러한 경우에는 다음과 같은 형식으로

 
PLOT y_variable*x_variable = type_variable;

 

Type Variable을 지정하면 출력 플롯과 같이 SYMBOL 명령문의 설정에 따라 서로 다른 형태의 플롯이 함께 그려지게 됩니다.

또한, 이 예에서는 관찰값을 연결하는 I=SPLINE을 사용하고 있는데 I=JOIN(관찬값을 직선으로 연결한다.) 또는 I=SPLINE(관찰값을 운형보간곡선으로 연결한다.) 옵션을 사용하는 경우에는 데이터가 미리 x 축 변수에 의해서 정렬되어 있도록 하는 것이 좋습니다. 그렇지 않으면 연결선이 보기 좋게 출력되지 않습니다. 따라서 필요한 경우 SORT 프로시저를 이용하여 데이터를 X축 변수에 의해서 정렬한 후 플롯을 작성하는 것이 바람직합니다.

 

 

3. Bubble PLOT

Bubble Plot은 거품도로 관찰값들을 거품으로 표시한 것으로 BUBBLE 명령문을 이용하여 작성됩니다.

'박테리아 분열의 수와 크기가 온도에 미치는 영향'의 정도를 거품도를 사용하여 알아보겠습니다.

TITLE 'Effect of Temperature on the Number' J=C 'and Size of Bacterial Divisions';
Footnote F=SWISSB H=1.5 J=R 'Gplot 4 : Bubble Plot';
Axis Label=('Size (in Angstroms)');
AXIS Label=('Divisions');

PROC GPLOT Data=work.bacteria;
Bubble div*mass = life / HAXIS=AXIS1 Vaxis=AXIS2 bsize=15 Bcolor=hotpink BLABEL;
RUN;

 

 

스크린샷_2021-10-13_오후_4.22.46.png

 

박테리아의 분열의 수와 사이즈가 온도에 미치는 영향을 버블 차트로 그려보았습니다.

BUBBLE 명령문에서는 왼쪽에 지정한 두 개의 변수가 만나는 관찰값에 오른쪽에 지정한 세번째 변수값의 크기에 비례하는 거품을 표시하게 됩니다. BLABEL 옵션을 사용하여 버블의 크기 숫자를 그래프에 넣을 수 있습니다.

 

 

Version history
Last update:
‎10-13-2021 03:45 AM
Updated by:
Contributors

sas-innovate-white.png

🚨 Early Bird Rate Extended!

Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.

 

Lock in the best rate now before the price increases on April 1.

Register now!

Article Labels
Article Tags