本篇可以算是「使用SGPLOT繪製熱圖(Heatmap)」的加強版?
其實是把多張熱圖同時放在一張圖上而已啦。統計圖結果如下:
當同時有多張圖想要呈現於一張統計圖上時,SGPANEL是非常推薦的程序。不過SGPANEL支援的語法和SGPLOT是不太相同的,需要花一點時間調整一下,但不會差很多。
先建立範例檔案,於【程式01】
/*程式01*/
data heatmap_1 (drop=i);; do year=2012 to 2017; do week=1 to 7; do team=1 to 6; do i=1 to 200; if uniform(1)>=0.3 then output; end; end; end; end;
run; |
熱圖部分,需要事先準備好「可以畫圖」的資料,所以【程式02】將原始資料先轉為可繪圖的資料,並設定自訂格式於【程式03】
/*程式02*/
proc freq data=heatmap_1 noprint; tables team*year*week / sparse out=heatmap_2 (where=(percent^=.)) outpct;
run; /*程式03*/
proc format ; value teamf 1="第一隊" 2="第二隊" 3="第三隊" 4="第四隊" 5="第五隊" 6="第六隊"; value fweekday 1="一" 2="二" 3="三" 4="四" 5="五" 6="六" 7="日";
run;
|
【程式04】為熱圖組的程式。
/*程式04*/ ods html gpath = "e:\temp\" image_dpi=300 style=htmlblue;
ods graphics on / reset=all reset=index noborder height=6in width =5in antialiasmax=10000 imagename = "圖" imagefmt =png ;
ods results off; proc sgpanel data=heatmap_2 ; format team teamf. week fweekday.; panelby team /columns=2 rows=3 novarname; heatmap x=year y=week / freq=count discretex discretey colormodel=(white red) ; styleattrs backcolor=white wallcolor=white; gradlegend / title='案件數' ; colaxis valueattrs=(size=7) label="年度"; rowaxis discreteorder=data reverse valueattrs=(size=7) label="星期"; title j=c h=14pt '歷年案件數'; run;
ods results on; title;quit;
|
「ods html」和「ods graphics」可讓統計圖直接輸出為檔案。
「panelby」設定圖組分組的變項。novarname可以設定不呈現變項名於圖上。
「heatmap」為繪圖的主要語法。
「gradlegend」修改熱圖旁的圖例說明。
「colaxis」修改X軸。
「rowaxis」修改Y軸。
以上就是本次的分享~
熱圖需SAS 9.4M3版本。
-------相關連結------
網誌管理員已經移除這則留言。
回覆刪除