ODS Graphics Statistical Graphics Procedures

/****************************************************************/
/*          S A S   S A M P L E   L I B R A R Y                 */
/*                                                              */
/*    NAME: ODSGRAF                                             */
/*   TITLE: ODS Graphics Statistical Graphics Procedures        */
/* PRODUCT: STAT                                                */
/*  SYSTEM: ALL                                                 */
/*    KEYS: graphics, ods                                       */
/*   PROCS:                                                     */
/*    DATA:                                                     */
/*                                                              */
/* SUPPORT: saswfk                UPDATE: July 25, 2011         */
/*     REF: ods graphics                                        */
/*    MISC:                                                     */
/*   NOTES:                                                     */
/****************************************************************/

proc sgplot data=sashelp.enso noautolegend;
   title 'Atmospheric Pressure Differences between '
         'Easter Island and Darwin, Australia';
   pbspline y=pressure x=year;
run;

proc sgscatter data=sashelp.class;
   matrix _numeric_ / diagonal=(kernel histogram);
run;

data times;
   input time1-time23;
   datalines;
122  150  166  179  219  247  276  296  324  354  380  445
478  508  536  569  599  627  655  668  723  751  781
;

data cows;
   if _n_ = 1 then merge times;
   array t{23} time1 - time23;
   array w{23} weight1 - weight23;
   input cow iron infection weight1-weight23 @@;
   do i=1 to 23;
      weight = w{i};
      tpoint = (t{i}-t{1})/10;
      output;
   end;
   keep cow iron infection tpoint weight;
   datalines;
 1 0 0  4.7    4.905  5.011  5.075  5.136  5.165  5.298  5.323
        5.416  5.438  5.541  5.652  5.687  5.737  5.814  5.799
        5.784  5.844  5.886  5.914  5.979  5.927  5.94
 2 0 0  4.868  5.075  5.193  5.22   5.298  5.416  5.481  5.521
        5.617  5.635  5.687  5.768  5.799  5.872  5.886  5.872
        5.914  5.966  5.991  6.016  6.087  6.098  6.153
 3 0 0  4.868  5.011  5.136  5.193  5.273  5.323  5.416  5.46
        5.521  5.58   5.617  5.687  5.72   5.753  5.784  5.784
        5.784  5.814  5.829  5.872  5.927  5.9    5.991
 4 0 0  4.828  5.011  5.136  5.193  5.273  5.347  5.438  5.561
        5.541  5.598  5.67    .     5.737  5.844  5.858  5.872
        5.886  5.927  5.94   5.979  6.052  6.028  6.12
 5 1 0  4.787  4.977  5.043  5.136  5.106  5.298  5.298  5.371
        5.438  5.501  5.561  5.652  5.67   5.737  5.784  5.768
        5.784  5.784  5.829  5.858  5.914  5.9    5.94
 6 1 0  4.745  4.868  5.043  5.106  5.22   5.298  5.347  5.347
        5.416  5.501  5.561  5.58   5.687  5.72   5.737  5.72
        5.737  5.753  5.768  5.784  5.844  5.844  5.9
 7 1 0  4.745  4.905  5.011  5.106  5.165  5.273  5.371  5.416
        5.416  5.521  5.541  5.635  5.687  5.704  5.784  5.768
        5.768  5.814  5.829  5.858  5.94   5.94   6.004
 8 0 1  4.942  5.106  5.136  5.193  5.298  5.347  5.46   5.521
        5.561  5.58   5.635  5.704  5.784  5.823  5.858  5.9
        5.94   5.991  6.016  6.064  6.052  6.016  5.979
 9 0 1  4.605  4.745  4.868  4.905  4.977  5.22   5.165  5.22
        5.22   5.247  5.298  5.416  5.501  5.521  5.58   5.58
        5.635  5.67   5.72   5.753  5.799  5.829  5.858
10 0 1  4.7    4.868  4.905  4.977  5.011  5.106  5.165  5.22
        5.22   5.22   5.273  5.384  5.438  5.438  5.501  5.501
        5.541  5.598  5.58   5.635  5.687  5.72   5.704
11 0 1  4.828  5.011  5.075  5.165  5.247  5.323  5.394  5.46
        5.46   5.501  5.541  5.609  5.687  5.704  5.72   5.704
        5.704  5.72   5.737  5.768  5.858  5.9    5.94
12 0 1  4.7    4.828  4.905  5.011  5.075  5.165  5.247  5.298
        5.298  5.323  5.416  5.505  5.561  5.58   5.561  5.635
        5.687  5.72   5.72   5.737  5.784  5.814  5.799
13 0 1  4.828  5.011  5.075  5.136  5.22   5.273  5.347  5.416
        5.438  5.416  5.521  5.628  5.67   5.687  5.72   5.72
        5.799  5.858  5.872  5.914  5.94   5.991  6.016
14 0 1  4.828  4.942  5.011  5.075  5.075  5.22   5.273  5.298
        5.323  5.298  5.394  5.489  5.541  5.58   5.617  5.67
        5.704  5.753  5.768  5.814  5.872  5.927  5.927
15 0 1  4.745  4.905  4.977  5.075  5.193  5.22   5.298  5.323
        5.394  5.394  5.438  5.583  5.617  5.652  5.687  5.72
        5.753  5.768  5.814  5.844  5.886  5.886  5.886
16 0 1  4.7    4.868  5.011  5.043  5.106  5.165  5.247  5.298
        5.347  5.371  5.438  5.455  5.617  5.635  5.704  5.737
        5.784  5.768  5.814  5.844  5.886  5.94   5.927
17 1 1  4.605  4.787  4.828  4.942  5.011  5.136  5.22   5.247
        5.273  5.247  5.347  5.366  5.416  5.46   5.541  5.481
        5.501  5.635  5.652  5.598  5.635  5.635  5.598
18 1 1  4.828  4.977  5.011  5.136  5.273  5.298  5.371  5.46
        5.416  5.416  5.438  5.557  5.617  5.67   5.72   5.72
        5.799  5.858  5.886  5.914  5.979  6.004  6.028
19 1 1  4.7    4.905  4.942  5.011  5.043  5.136  5.193  5.193
        5.247  5.22   5.323  5.338  5.371  5.394  5.438  5.416
        5.501  5.561  5.541  5.58   5.652  5.67   5.704
20 1 1  4.745  4.905  4.977  5.043  5.136  5.273  5.347  5.394
        5.416  5.394  5.521  5.617  5.617  5.617  5.67   5.635
        5.652  5.687  5.652  5.617  5.687  5.768  5.814
21 1 1  4.787  4.942  4.977  5.106  5.165  5.247  5.323  5.416
        5.394  5.371  5.438  5.521  5.521  5.561  5.635  5.617
        5.687  5.72   5.737  5.737  5.768  5.768  5.704
22 1 1  4.605  4.828  4.828  4.977  5.043  5.165  5.22   5.273
        5.247  5.22   5.298  5.375  5.371  5.416  5.501  5.501
        5.521  5.561  5.617  5.635  5.72   5.737  5.768
23 1 1  4.7    4.905  5.011  5.075  5.106  5.22   5.22   5.298
        5.323  5.347  5.416  5.472  5.501  5.541  5.598  5.598
        5.598  5.652  5.67   5.704  5.737  5.768  5.784
24 1 1  4.745  4.942  5.011  5.075  5.106  5.247  5.273  5.323
        5.347  5.371  5.416  5.481  5.501  5.541  5.598  5.598
        5.635  5.687  5.704  5.72   5.829  5.844  5.9
25 1 1  4.654  4.828  4.828  4.977  4.977  5.043  5.136  5.165
        5.165  5.165  5.193  5.204  5.22   5.273  5.371  5.347
        5.46   5.58   5.635  5.67   5.753  5.799  5.844
26 1 1  4.828  4.977  5.011  5.106  5.165  5.22   5.273  5.323
        5.371  5.394  5.46   5.576  5.652  5.617  5.687  5.67
        5.72   5.784  5.784  5.784  5.829  5.814  5.844
;

proc glimmix data=cows;
   t2 = tpoint / 100;
   class cow iron infection;
   model weight = iron infection iron*infection tpoint;
   random t2 / type=rsmooth subject=cow
                    knotmethod=kdtree(bucket=100 knotinfo);
   output out=gmxout pred(blup)=pred;
   nloptions tech=newrap;
run;

data plot;
   set gmxout;
   length Group $ 26;
   if      (iron=0) and (infection=0) then group='Control Group (n=4)';
   else if (iron=1) and (infection=0) then group='Iron - No Infection (n=3)';
   else if (iron=0) and (infection=1) then group='No Iron - Infection (n=9)';
   else group = 'Iron - Infection (n=10)';
run;

proc sort data=plot; by group cow;
run;

proc sgpanel data=plot noautolegend;
   title 'Radial Smoothing with Cow-Specific Trends';
   label tpoint='Time' weight='log(Weight)';
   panelby group / columns=2 rows=2;
   scatter x=tpoint y=weight;
   series  x=tpoint y=pred / group=cow lineattrs=GraphFit;
run;

proc template;
   define statgraph Scatter;
      begingraph;
         entrytitle "Simple Scatter Plot of the Class Data Set";
         layout overlay;
            scatterplot y=weight x=height / datalabel=name;
         endlayout;
      endgraph;
   end;
run;

proc sgrender data=sashelp.class template=scatter;
run;

proc template;
   define statgraph Scatter;
      begingraph;
         entrytitle "Scatter Plot of the Class Data Set with Fit Functions";
         layout overlay;
            scatterplot y=weight x=height / datalabel=name;
            pbsplineplot y=weight x=height / name='pbs'
                         legendlabel='Penalized B-Spline'
                         lineattrs=GraphData1;
            regressionplot y=weight x=height / degree=1 name='line'
                         legendlabel='Linear Fit'
                         lineattrs=GraphData2;
            regressionplot y=weight x=height / degree=3 name='cubic'
                         legendlabel='Cubic Fit'
                         lineattrs=GraphData3;
            loessplot y=weight x=height / name='loess'
                         legendlabel='Loess Fit'
                         lineattrs=GraphData4;
            discretelegend 'pbs' 'line' 'cubic' 'loess';
         endlayout;
      endgraph;
   end;
run;

proc sgrender data=sashelp.class template=scatter;
run;

proc template;
   define statgraph Panel;
      begingraph;
         entrytitle "Paneled Display of the Class Data Set";

         layout lattice / rows=2 columns=2 rowgutter=10 columngutter=10;

            layout overlay;
               scatterplot y=weight x=height;
               pbsplineplot y=weight x=height;
            endlayout;

            layout overlay / xaxisopts=(label='Weight');
               histogram weight;
            endlayout;

            layout overlay / yaxisopts=(label='Height');
               boxplot y=height;
            endlayout;

            layout overlay / xaxisopts=(offsetmin=0.1 offsetmax=0.1)
                             yaxisopts=(offsetmin=0.1 offsetmax=0.1);
               scatterplot  y=weight x=height / markercharacter=sex
                  name='color' markercolorgradient=age;
               continuouslegend 'color'/ title='Age';
            endlayout;

         endlayout;
      endgraph;
   end;
run;

proc sgrender data=sashelp.class template=panel;
run;