Mục lục
Chương trình thường dùng để vẽ đồ thị trong SAS là PROC SGPLOT. Cú pháp như sau:
ODS GRAPHICS ON/HEIGHT=3in WIDTH=6in;
PROC SGPLOT DATA=FINALBIN;
VBAR /*X-axis*// RESPONSE=/*Y-axis*/ GROUP=/*Group Variable*/ /*Option1*/;
VLINE /*X-axis*// RESPONSE=/*Y-axis*/ GROUP=/*Group Variable*/ /*Option2*/;
TITLE /*Title*/;
WHERE;
Y2AXIS LABEL=/*Axis Label*/ /*Option*/;
YAXIS LABEL=/*Axis Label*/ /*Option*/;
XAXIS LABEL=/*Axis Label*/ /*Option*/;
LABEL /*Variable Label*/;
RUN;
Trong đó:
ODS GRAPHICS
Các tùy chọn về kích thước đồ thị. Phổ biến nhất là tùy chọn độ dài chiều ngang và chiều dọc.-
VBAR/VLINE/HBAR/SCATTER/…
là dạng đồ thị. Chú ý rằng có hai dạng đồ thị chính là rời rạc và liên tục. Chỉ các đồ thị cùng dạng mới có thể kết hợp với nhau.- Đồ thì rời rạc bắt đầu bằng
VBAR VALUE1/RESPONSE=VALUE2
- Đồ thị liên tục bắt đầu bằng
SCATTER X=VALUE1 Y= VALUE2
- Đồ thì rời rạc bắt đầu bằng
OPTION1/OPTION2:
các tùy chọn về hình dạng của đồ thị: màu sắc, định dạng, format, …TITLE
Title của đồ thị.XAXIS/X2AXIS/YAXIS/Y2AXIS
các tùy chọn về các trục của đồ thị bao gồm: Label, thứ tự, …WHERE
các điều kiện lọc dữ liệu.
Đồ thị với dữ liệu rời rạc
Ví dụ vẽ đồ thị với các giá trị rời rạc:
PROC SQL NOPRINT;
CREATE TABLE TEMP00 AS
SELECT MAKE, ORIGIN, COUNT(*) AS NUM, MEAN(INVOICE) AS INVOICE, MEAN(MPG_CITY) AS MPG_CITY
FROM SASHELP.CARS
GROUP BY MAKE, ORIGIN
HAVING (CALCULATED NUM)>10
ORDER BY (CALCULATED INVOICE);
QUIT;
PROC SGPLOT DATA=TEMP00;
VBAR MAKE/ RESPONSE=INVOICE NOOUTLINE MISSING ;
VLINE MAKE/ RESPONSE=MPG_CITY Y2AXIS LINEATTRS=(COLOR=CX9CBA5F PATTERN=SOLID THICKNESS=2PX)
MARKERATTRS=(SYMBOL=CIRCLEFILLED COLOR=CX9CBA5F) MARKERS MISSING;
TITLE "Summary data by Make";
Y2AXIS LABEL="Mean MPG City";
YAXIS LABEL="Mean Invoice";
XAXIS LABEL="Make" DISCRETEORDER=DATA;
LABEL INVOICE="Mean Invoice" MPG_CITY="Mean MPG City";
RUN;
Kết quả nhận được như sau:
Ví dụ về sử dụng GROUP=
PROC SQL NOPRINT;
CREATE TABLE TEMP00 AS
SELECT MAKE, ORIGIN, COUNT(*) AS NUM, MEAN(INVOICE) AS INVOICE, MEAN(MPG_CITY) AS MPG_CITY
FROM SASHELP.CARS
GROUP BY MAKE, ORIGIN
HAVING (CALCULATED NUM)>10
ORDER BY ORIGIN, (CALCULATED INVOICE);
QUIT;
PROC SGPLOT DATA=TEMP00;
VBAR MAKE/ RESPONSE=INVOICE GROUP=ORIGIN NOOUTLINE MISSING ;
VLINE MAKE/ RESPONSE=MPG_CITY GROUP=ORIGIN Y2AXIS LINEATTRS=(COLOR=CX9CBA5F PATTERN=SOLID THICKNESS=2PX)
MARKERATTRS=(SYMBOL=CIRCLEFILLED COLOR=CX9CBA5F) MARKERS MISSING;
TITLE "Summary data by Make";
Y2AXIS LABEL="Mean MPG City";
YAXIS LABEL="Mean Invoice";
XAXIS LABEL="Make" DISCRETEORDER=DATA;
LABEL INVOICE="Mean Invoice" MPG_CITY="Mean MPG City";
RUN;
Kết quả nhận được như sau:
Đồ thị với dữ liệu liên tục
DATA TEMP00;
DO X=-50 TO 50;
Y=X**3-10*X**2+20*X-2+10000*RAND('NORMAL', 0, 1);
Y1=X**3-10*X**2+20*X-2;
OUTPUT;
END;
RUN;
PROC SGPLOT DATA=TEMP00;
SCATTER X=X Y=Y /MARKERATTRS=(SYMBOL=CIRCLE);
SERIES X=X Y=Y1 / LINEATTRS=(COLOR=CXBE5150);
TITLE "An example";
RUN;
Kết quả nhận được như sau:
Ví dụ khác với tùy chọn GROUP=
:
DATA TEMP00;
DO X=-50 TO 50;
Y=X**3-10*X**2+20*X-2+10000*RAND('NORMAL', 0, 1);
Y1=X**3-10*X**2+20*X-2;
GROUP=IFC(Y>Y1, "Higer", "Lower");
OUTPUT;
END;
RUN;
PROC SGPLOT DATA=TEMP00;
SCATTER X=X Y=Y / GROUP=GROUP MARKERATTRS=(SYMBOL=CIRCLE);
SERIES X=X Y=Y1 / GROUP=GROUP LINEATTRS=(COLOR=CX9CBA5F );
TITLE "An example";
YAXIS LABEL="Y-values";
XAXIS LABEL="X-values";
RUN;
Kết quả nhận được như sau:
Đồ thị dạng khác
Để vẽ đồ thị phân phối của một biến, ta dùng cú pháp như sau:
PROC SGPLOT DATA=SASHELP.CLASS;
HISTOGRAM HEIGHT;
DENSITY HEIGHT;
DENSITY HEIGHT / TYPE=KERNEL;
TITLE "Histogram Plot";
RUN;
Kết quả nhận được như sau:
PROC SGPLOT DATA=SASHELP.CLASS;
HISTOGRAM HEIGHT/ GROUP=SEX TRANSPARENCY=0.5;
DENSITY HEIGHT;
DENSITY HEIGHT / TYPE=KERNEL;
TITLE "Histogram Plot with Group";
RUN;
Kết quả nhận được như sau: