2018年3月26日

〔SAS〕使用SGPLOT繪盒鬚圖

盒鬚圖(Box Plot)亦稱為盒型圖。在SAS裡面盒鬚圖的說明可到SAS官網說明文件查看,簡單說盒子底部為Q1(第25百分位數),盒子內部中線為中位數,盒子上端為Q3(第75百分位數),盒子中間的符號通常為平均值。天線一般來說是1.5倍四分位距(intra-quartile range, IQR)中最小或最大值,而在天線外面的點一般為極端值(outlier)。

盒鬚圖如下:

先建立範例檔案,於【程式01】

/*程式01*/
data vbar_1;
     do i=1 to 200;
         do hr=0 to 23;
             do week=1 to 7;
                 if 0<=hr<=1 then  time=normal (1)*(55)+55+mod(hr,5);
                 if 2<=hr<=5 then  time=normal (1)*(65)+65+mod(hr,5);
                 if 5<=hr<=6 then  time=normal (1)*(45)+45+mod(hr,5);
                 if 6<=hr<=20 then  time=normal (1)*(35)+35+mod(hr,5);
                 if 21<=hr<=23 then  time=normal (1)*(40)+40+mod(hr,5);
                 if 10<=time<=250 and uniform(1) >=(0.3)  then output;
             end;
         end;
     end;
run;

【程式02】盒型圖(沒有天線的)主要程式。

/*程式02*/
ods html gpath = "e:\temp\"  image_dpi=300  style=htmlblue;
ods graphics on / reset=all reset=index noborder height=6in width =6in
                           antialiasmax=10000  imagename = "圖1" imagefmt =png ;
ods results off;
     proc sgplot data=vbar_1 ;
         format  time 5.1;
         vbox time /category=hr
                        dataskin=pressed
                        fillattrs=(color=red)
                        nooutliers
                        nocaps 
                        whiskerattrs=(thickness=0)
                         meanattrs=(symbol=diamondfilled color=red)
                        medianattrs=(pattern=1 thickness= 3 color=darkred)
                         connect=mean
                        connectattrs=( pattern=1 color=lightred thickness= 1)
                         transparency=0.3  ;
          styleattrs backcolor=white wallcolor=white ;
         refline 60  120  180 240/ lineattrs=(pattern=2 color=gray thickness=0.4%) axis=y transparency=0.5;
         xaxis  label="小時" valueattrs=(size=7);;
         yaxis  label="秒數" values=(20 to 130 by 10 )  valueattrs=(size=7);
         title j=c h=14pt '出動時間統計';
     run;
ods results  on; title;quit;

「ods html」和「ods graphics」可讓統計圖直接輸出為檔案。

「vbox」為繪製(垂直)盒型圖主要語法。如果要改為水平盒型圖可用hbox。dataskin整體圖形的樣式;fillattrs設定盒子的填滿的顏色;nooutliers為不要繪極端值; nocaps不要繪天線的帽子;whiskerattrs設定天線樣式(這裡讓天線不要畫出來); meanattrs平均值的樣式;medianattrs中位數的樣式;connect繪製連接線,把平均值或中位數的值相連;connectattrs連結線的樣式;transparency設定整體圖形的透明度(0:不透明,1;完全透明)。

「refline」繪製參考線。於Y軸數值為60、120、180、240的位置繪製參考線。

「xaxis」修改X軸。

「yaxis」修改Y軸。

「title」設定標題文字和格式。

圖1


【程式03】盒鬚圖主要程式。

/*程式03*/
ods html gpath = "e:\temp\"  image_dpi=300  style=htmlblue;
ods graphics on / reset=all reset=index noborder height=6in width =6in
                            antialiasmax=10000  imagename = "圖2" imagefmt =png ;
ods results off;
         proc sgplot data=vbar_1 ;
         format  time 5.1;
         vbox time /category=hr
                        dataskin=pressed
                        fillattrs=(color=red )
                         whiskerattrs=(pattern=1 color=lightred thickness=1 )
                        outlierattrs=(symbol=circle size=3 color=verylightred)
                         meanattrs=(symbol=diamondfilled color=red)
                        medianattrs=(pattern=1 thickness= 3 color=darkred)
                         connect=mean
                        connectattrs=( pattern=1 color=lightred thickness= 1)
                         transparency=0.3  ;
           styleattrs backcolor=white wallcolor=white ;
         refline  60  120  180 240/ lineattrs=(pattern=2 color=gray thickness=0.4%) axis=y transparency=0.5;
         xaxis  label="小時" valueattrs=(size=7);
         yaxis  label="秒數" values=(0 to 260 by 20 )  valueattrs=(size=7);
         title j=c h=14pt '出動時間統計';
     run;
ods results  on; title;quit;

「vbox」為繪製盒鬚圖的主語法。whiskerattrs設定天線樣式;outlierattrs設定極端值的樣式;meanattrs平均值的樣式;medianattrs中位數的樣式;connect繪製連接線;connectattrs連結線的樣式;transparency設定整體圖形的透明度。

圖2

-------相關連結------

〔SAS〕使用SGPLOT繪製熱圖(Heatmap)
〔SAS〕以SGPANEL繪製熱圖組
〔SAS〕使用SGPLOT繪長條圖及折線圖

沒有留言:

張貼留言