אחת מהיכולות היותר מעניינות ב – sgplot היא האפשרות לצייר כמה גרפים אחד על השני וכך ליצור די בקלות המחשות ויזואליות מעניינות.
נתחיל עם דוגמא די פשוטה ושימושית – הצגת גרף עמודות וגרף קו בגרף אחד:
proc sgplot data=sashelp.cars noautolegend;
vbar type ;
vline type / response=msrp stat=mean y2axis lineattrs=(thickness=3px) ;
yaxis label="כמות";
y2axis min=0 label="מחיר ממוצע";
run;
בדוגמא לעיל בנינו שני גרפים אחד על השני. סדר הציור שלהם הוא הסדר בו הם מופיעים בקוד כך שגרף הקו מופיע על גרף העמודות (נסו להחליף את הסדר של השורות ותראו מה יוצא).
כמובן שאפשר להמשיך ולשכלל את הויזואליזציות שניתן לייצר בעזר sgplot. הדוגמא הבאה כוללת 3 גרפים אחד על השני. כדי למנוע מגרפים "עליונים" יותר בסדר הציור שלהם להסתיר מידע מגרפים שמתחתם ניתן לשלוט על מידת השקיפות שלהם:
proc sgplot data=sashelp.cars ;
hbar type /x2axis;
hbar type/response=invoice stat=mean barwidth=0.5 fillattrs=(color=green transparency=0.5);
dot type / stat=mean response=msrp limits=both limitstat=stddev;
xaxis min=0 label="מחיר ממוצע";
x2axis label="כמות";
yaxis display=(nolabel);
run;
הדוגמא האחרונה להיום כוללת ארבעה גרפים מסוגים שונים כדי להציג את מירב המידע האפשרי בתמונה אחת:
proc sgplot data=SASHELP.CLASSFIT;
band x=height lower=lower upper=upper/legendlabel="95% רווח סמך" fillattrs=(color=lightblue);
band x=height lower=lowermean upper=uppermean / fillattrs=(color=orange) legendlabel="95% רווח סמך לממוצע";
scatter x=height y=weight/legendlabel="תצפיות";
series x=height y=predict/legendlabel="קו רגרסיה";
run;
מספר השילובים הוא עצום אבל ישנן מספר מגבלות שלרוב הן די מובנות מאליהן כמו למשל שלא ניתן לשלב גרפים עם ציר בדיד (למשל ארץ) וגרף עם ציר רציף (למשל מחיר) שכן אין לצירים שכאלו שום שפה משותפת.
האתגר היותר קשה הוא להשתמש נכון בכל היכולות הללו כדי להעביר בגרף את כל המידע שאנחנו רוצים ובדיוק את המידע הזה ללא אינפורמציה מיותרת כדי להוביל את הקורא (צופה?) אל המסקנה המדויקת אליה אנחנו מכוונים.
חגי