SAS 畫折線圖PROC GPLOT


雖然最后做成PPT里的圖表會被要求用EXCEL畫,但當我們只是在分析的過程中,想看看數據的走勢,直接在SAS里畫會比EXCEL畫便捷的多。

修改起來也會更加的簡單,,不用不斷的修改程序然后刷新EXCEL里的透視表,,甚至有時還是需要重新插入圖表等等麻煩的操作。

以下將介紹折線圖(PROC GPLOT的用法):

先看代碼:


AXIS1 ORDER=(1990 TO 2012 BY 5) MINOR=(NUMBER=1);
AXIS2 ORDER=(13000 TO 20000 BY 1000) MINOR=(HEIGHT=5 NUMBER=1);
AXIS3 MAJOR=(height=10 NUMBER=20) MINOR=(NUMBER=1);
SYMBOL INTERPOL=JOIN VALUE=DOT HEIGHT=10;
PROC GPLOT DATA=EX.SALES_YEAR;
TITLE 'YEARLY AMOUNT IN NORTH AMERICA';
PLOT N_AMOUNT*YEAR/LEGEND HAXIS=AXIS1 VAXIS=AXIS2;
PLOT2 N_Transactions*YEAR/LEGEND VAXIS=AXIS3;
RUN;
QUIT;
GOPTIONS RESET=ALL;

以上的例子幾乎可以滿足所有畫折線圖的需求。畫一個簡單的折線圖必須用到的關鍵有SYMBOL、PLOT、QUIT;

1、關鍵字SYMBOL,是設置折線的樣式的。其中INTERPOL=join表示將散點用線連接起來,VALUE=dot規定數據點的樣式(dot表示用點表示),HEIGHT 表示數據點的大小(一般這里不寫HEIGHT,使用默認大小為1)。另外若在一張圖里畫多條折線的話,不同折線的樣式要求不用則是SYMBOL1對應PLOT1 即,設置多個SYMBOLN對應PLOTN;

2、關鍵字PLOT,規定畫折線圖的數據字段(縱坐標字段*橫坐標字段)。LEGEND表示要表明圖例(不寫則沒有圖例);

3、QUIT,PROC GPLOT過程雖然有RUN結尾,但只有RUN是不夠的,,SAS會一直運行下去,導致不能運行PROC GPLOT以外的代碼,在RUN后面應該加上QUIT;語句來終止SAS運行proc gplot過程。

除了以上提到的關鍵字還有一些在畫復雜點的折線圖也是必須要的:

4、AXISN、規定坐標軸的樣式和PLOT語句中的HAXIS和VAXIS連用才有效。ORDER=()規定坐標軸的上下限及跨度,MAJOR=()也可以代替ORDER=()規定坐標軸的主刻度如:MAJOR=(HEIGH=1 NUMBER=8)HEIGHT=1規定主刻度先的長度,NUMBER=8規定有8跟主刻度線;還有MINOR=()同理規定坐標軸的副刻度線如:MINOR=(HEIGHT=0.5 NUMBER=5)表示副刻度線的長度為主刻度線的一半,且相鄰的兩根主刻度線中有5跟副刻度線;

5、GOPTIONS RESET=ALL;以上的每一個關鍵設置的格式一旦運行生成,除非用新的同關鍵字的格式覆蓋或者SAS重啟,格式是不會改變的。又因為每一個圖表用的格式可能會不一樣,為了不需要每一條覆蓋可以用GOPTIONS RESET=ALL;運行一下,,所有格式都歸為默認值,可重新設置。當然有時並不是所有的格式都要重置比如只需要重置SYMBOL,這時可以把這句改成GOPTIONS RESET=SYMBOL;即可,其余的同理。

上面代碼運行完后的折線圖如下(為了清楚的認識各個關鍵字的功能,此折線圖設置的參數有點誇張,嘻嘻。。。。):

另外若要畫多條折線還可以用以下寫法:

AXIS1 MINOR=(COLOR=BLUE NUMBER=1);
AXIS2 MINOR=(COLOR=BLUE HEIGHT=0.25 NUMBER=1);
SYMBOL1 INTERPOL=JOIN VALUE=DOT C=BLUE;
SYMBOL2 INTERPOL=JOIN VALUE=# C=GREEN;
PROC GPLOT DATA=EX.SALES_YEAR;
    TITLE 'YEARLY AMOUNT IN NORTH AMERICA';
    PLOT N_AMOUNT*YEAR E_AMOUNT*YEAR/OVERLAY LEGEND HAXIS=AXIS1 VAXIS=AXIS2 ;
RUN;
QUIT;
GOPTIONS RESET=ALL;

只用一個PLOT但是必須加一個關鍵字OVERLAY表示重疊表現。

 還有一種利用三個字段的數據作為三個維度畫多條折線:

GOPTIONS RESET=ALL;
AXIS1 ORDER=(1990 TO 2012 BY 5) MINOR=(NUMBER=1);
AXIS2 ORDER=(13000 TO 20000 BY 1000) MINOR=(HEIGHT=5 NUMBER=1);
SYMBOL INTERPOL=JOIN VALUE=DOT HEIGHT=10;
PROC GPLOT DATA=EX.SALES_YEAR_by_area;
    TITLE 'YEARLY AMOUNT IN NORTH AMERICA';
    PLOT AMOUNT*YEAR=area/overlay LEGEND HAXIS=AXIS1 VAXIS=AXIS2;
RUN;
QUIT;

畫出的圖就是關於area的多條折線,(area有幾個不同的就有幾條折線)

通常單一的折線圖恐怕不能滿足需求,接下來是折線柱形圖:

PROC GBARLINE DATA=MYFAIL;
    VBAR CAUSE/SUMVAR=COUNT TYPE=SUM;
    PLOT /SUMVAR=COUNT FREQ=COST;
RUN;

折線柱形圖的過程名叫:GBARLINE,其中必須的關鍵字有:vbar plot sumvar

VBAR說明畫的是縱向的柱形圖,

通常VBAR后面的選項會加一個discrete表示以橫坐標變量的每一個不同的值為一個柱子

sumvar指明統計變量,,

type指明統計方式(默認是求和sum,還可以求別的)

plot說明畫的是折線圖

FREQ這里不是必須的,按需寫即可(功能是給之前的統計變量乘以一個權重值后再求和,權重值就儲存在freq=跟着的變量中);

以上代碼畫出來的圖如下:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM