Sample 35177: Three-Row Lattice Layout
This samples uses the Graph Template Language (GTL) to produce a three-row lattice layout.
          These sample files and code examples are provided by SAS Institute
          Inc. "as is" without warranty of any kind, either express or implied, including
          but not limited to the implied warranties of merchantability and fitness for a
          particular purpose. Recipients acknowledge and agree that SAS Institute shall
          not be liable for any damages whatsoever arising out of their use of this material.
          In addition, SAS Institute will provide no support for the materials contained herein.
        
 
Before running the code below, click on the Download tab and download the data set fusion_35177_2_weather.  Change the LIBNAME statement at the end of this program to point to the location where the data set has been stored.
proc template;
  define statgraph weather;  
  begingraph / designwidth=640px designheight=480px backgroundcolor=cxd5d9d2;
  entrytitle "2008 Weather for Raleigh NC"; 
  layout lattice / columndatarange=unionall columns=1  
                   rowgutter=5px rowweights=(.40 .40 .20);
    columnaxes;
      columnaxis / display=none type=linear offsetmin=0 offsetmax=0 
                 linearopts=( thresholdmin=0 thresholdmax=0 viewmax="31dec2008"d);           
    endcolumnaxes;   
    rowheaders; 
      layout gridded / columns=2;
        entry "Temperature" / /* textattrs=(weight=bold)*/ rotate=90;
        entry "(Fahrenheit)" / rotate=90;
      endlayout;
      layout gridded / columns=2; 
        entry "Precipitation" / /*textattrs=(weight=bold)*/ rotate=90; 
        entry "(Inches)" / rotate=90;
      endlayout;
        entry "Humidity" / /*textattrs=(weight=bold)*/ rotate=90;		   
    endrowheaders;
   /* row 1 - temperatures */
   layout overlay / yaxisopts=(display=(tickvalues) displaysecondary=(tickvalues)
                    label="Fahreheit" offsetmin=0 griddisplay=on 
                    linearopts=(viewmin=0 viewmax=100));
     innermargin / align=top;	
       /* display month names */
       blockplot x=start  block=Month / display=(fill outline values)
                        valuehalign=center valuevalign=center 
                        filltype=alternate fillattrs=GraphAltBlock altfillattrs=GraphAltBlock;
     endinnermargin;
   /* inset for annual temps */
   layout overlay / width=80px height=80px halign=center valign=bottom border=true
                    walldisplay=(fill) opaque=true
                    xaxisopts=(display=(tickvalues) tickvalueattrs=GraphDataText
                    linearopts=(viewmin=.5 viewmax=2.5 
                    tickvaluelist=(1 2)) offsetmin=.1 offsetmax=.1)
                    yaxisopts=(offsetmin=0 offsetmax=.1 display=none);
     entry "Average Temp" / valign=top location=outside textattrs=GraphValueText(size=7pt);
     vectorplot x=norm y=AnnualNormalTemp  xorigin=norm yorigin=0 / arrowheads=false
       datatransparency=.5 lineattrs=(thickness=10px color=GraphData2:color);
     scatterplot x=norm y=eval(AnnualNormalTemp+10) / markercharacter=eval(put(AnnualNormalTemp,4.1))
       MARKERCHARACTERATTRS=(size=6pt);              
     vectorplot x=act y=AnnualActualTemp xorigin=act yorigin=0 / arrowheads=false 
       lineattrs=(thickness=10px color=black);                     
     scatterplot x=act y=eval(AnnualActualTemp+10) / markercharacter=eval(put(AnnualActualTemp,4.1))
       MARKERCHARACTERATTRS=(size=6pt);
   endlayout;
     referenceline x=start / lineattrs=GraphGridlines;          
     bandplot x=date limitupper=MaxTempNormal limitLower=MinTempNormal/
       display=(fill) fillattrs=(color=GraphData4:color) datatransparency=.7;         
     vectorplot x=date  y=MeanTemp xorigin=date yorigin=Maxtemp / arrowheads=false lineattrs=(color=GraphData2:color);
     vectorplot x=date  y=MeanTemp xorigin=date yorigin=Mintemp / arrowheads=false lineattrs=(color=GraphData1:color);
     scatterplot x=date y=MeanTemp / name="s" primary=true  
       markerattrs=(symbol=circlefilled size=2px color=black) ;
     vectorplot xorigin=MaxTempDate yorigin=AnnualMaxTemp 
       x=eval(maxTempDate -30) y=eval(AnnualMaxtemp -5) /
       datalabel=eval(catx(" ","High",put(AnnualMaxTemp,3.),
       put(MaxTempDate,monname3.),put(MaxTempDate,day2.))) 
       arrowdirection=in;
     vectorplot xorigin=MinTempDate yorigin=AnnualMinTemp 
       x=eval(minTempDate +30) y=eval(AnnualMintemp -5) /
       datalabel=eval(catx(" ","Low",put(AnnualMinTemp,3.),
       put(MinTempDate,monname3.),put(MinTempDate,day2.))) 
       arrowdirection=in;
   endlayout;
   /* row 2 - precipitation */
   layout overlay / yaxisopts=(display=(tickvalues) displaysecondary=(tickvalues)
                    offsetmin=0 offsetmax=.1 griddisplay=on);
   /* inset for annual precipitation chart */
   layout overlay / width=80px height=80px halign=left valign=top border=true
                    walldisplay=(fill) opaque=true 
                    xaxisopts=(display=(tickvalues) tickvalueattrs=GraphDataText
                    linearopts=(viewmin=.5 viewmax=2.5 tickvaluelist=(1 2))
                    offsetmin=.1 offsetmax=.1)
                    yaxisopts=(offsetmin=0 offsetmax=.1 display=none);
     entry "Total Precip" / valign=top location=outside textattrs=GraphValueText(size=7pt);
     vectorplot x=norm y=TotalNormalPrecip xorigin=norm yorigin=0 / arrowheads=false datatransparency=.5                        
       lineattrs=(thickness=10px color=GraphData2:color);                        
     scatterplot x=norm y=eval(TotalNormalPrecip+10) / markercharacter=eval(put(TotalNormalPrecip,5.2))
       MARKERCHARACTERATTRS=(size=5pt);
     vectorplot x=act y=TotalActualPrecip xorigin=act yorigin=0 / arrowheads=false                                
       lineattrs=(thickness=10px color=GraphData1:color) ;
     scatterplot x=act y=eval(TotalActualPrecip+10) / markercharacter=eval(put(TotalActualPrecip,5.2))
       MARKERCHARACTERATTRS=(size=5pt);
   endlayout;
     referenceline x=start / lineattrs=GraphGridlines;
     needleplot x=Normal y=NormalPrecip /name="N"  legendlabel="Normal" 
       lineattrs=(thickness=26px color=GraphData2:color) datatransparency=.5 ;
     needleplot x=Actual y=ActualPrecip / name="A"   legendlabel="Actual" 
       datalabel=eval(put(ActualPrecip-Normalprecip,diff6.)) 
       lineattrs=(thickness=13px color=GraphData1:Color) 
       DataLabelATTRS=(size=5pt);
   endlayout;
   /* row 3 - humidity & dew point */
   layout overlay / yaxisopts=(display=(tickvalues)   
                    offsetmin=0 offsetmax=0 griddisplay=on   
                    linearopts=(viewmin=0 viewmax=1.1 tickvalueformat=percent.
                    tickvaluesequence=(start=0 end=1 increment=.25) ))
                    y2axisopts=(display=all offsetmin=0 offsetmax=.1 label="Dew point" labelattrs=(weight=bold) 
                    linearopts=(viewmin=0 viewmax=100  tickvalueformat=degfmt.)); 		    
     referenceline x=start / lineattrs=GraphGridlines;		
     bandplot x=date limitupper=eval(meanHumidity*.01) limitlower=0 / display=all
       datatransparency=.5 name="humid" legendlabel="Mean Relative Humidity"
       fillattrs=GraphData7 outlineattrs=GraphData7(pattern=solid);
       bandplot x=date limitupper=meanDew limitlower=0 / yaxis=y2  display=all
       datatransparency=.5    name="dew" legendlabel="Mean Dew Point"
       fillattrs=GraphData6 outlineattrs=GraphData6(pattern=solid);                       
       discretelegend "humid" "dew" / 	  
       halign=center valign=bottom opaque=true location=inside;
   endlayout;
   endlayout;
  endgraph;
  end;
run;
proc format;
  value temptype 1="Normal" 2="Actual";
  picture degfmt low-high="009°";
  picture diff low-<0="09.99" (prefix="-")
               0="9"  
              >0-high=09.99 (prefix="+");
run;
proc template;
  define Style weatherstyle;
  parent = styles.listing;
  style GraphFonts from GraphFonts                                                      
    "Fonts used in graph styles" /  
       'GraphTitleFont' = (", ",10pt,bold)
       'GraphLabelFont' = (", ",9pt) 
       'GraphValueFont' = (", ",8pt)
       'GraphDataFont' = (", ",7pt) 
       ;
  end;
run;
ods listing close;
ods html style=weatherstyle image_dpi=100 file='weather.html' path='.';
ods graphics / reset imagename="GTLHandout_Weather" labelmax=500 
               antialiasmax=10000 imagefmt=gif;
/* Click on the Download tab to download the data set. */
/* Specify the path where the WEATHER data set was downloaded. */
libname x 'path where data set WEATHER is stored';
proc sgrender data=x.fusion_35177_2_weather template=weather;
  format meantemp meandew degfmt. act norm temptype.; 
run;
ods html close;
ods listing;
          These sample files and code examples are provided by SAS Institute
          Inc. "as is" without warranty of any kind, either express or implied, including
          but not limited to the implied warranties of merchantability and fitness for a
          particular purpose. Recipients acknowledge and agree that SAS Institute shall
          not be liable for any damages whatsoever arising out of their use of this material.
          In addition, SAS Institute will provide no support for the materials contained herein.
        
 
 
This samples uses the Graph Template Language (GTL) to produce a three-row lattice layout.
| Type: | Sample | 
| Topic: | SAS Reference  ==>  Procedures  ==>  SGRENDER Query and Reporting  ==>  Creating Reports  ==>  Graphical  ==>  Graph Template Language (GTL)
  | 
| Date Modified: | 2009-03-19 12:43:23 | 
| Date Created: | 2009-03-18 09:55:05 | 
Operating System and Release Information
| SAS System | SAS/GRAPH | z/OS | 9.2 TS1M0 |  | 
| Microsoft® Windows® for 64-Bit Itanium-based Systems | 9.2 TS1M0 |  | 
| Microsoft Windows Server 2003 Datacenter 64-bit Edition | 9.2 TS1M0 |  | 
| Microsoft Windows Server 2003 Enterprise 64-bit Edition | 9.2 TS1M0 |  | 
| Microsoft Windows XP 64-bit Edition | 9.2 TS1M0 |  | 
| Microsoft® Windows® for x64 | 9.2 TS1M0 |  | 
| Microsoft Windows Server 2003 Datacenter Edition | 9.2 TS1M0 |  | 
| Microsoft Windows Server 2003 Enterprise Edition | 9.2 TS1M0 |  | 
| Microsoft Windows Server 2003 Standard Edition | 9.2 TS1M0 |  | 
| Microsoft Windows XP Professional | 9.2 TS1M0 |  | 
| Windows Vista | 9.2 TS1M0 |  | 
| 64-bit Enabled AIX | 9.2 TS1M0 |  | 
| 64-bit Enabled HP-UX | 9.2 TS1M0 |  | 
| 64-bit Enabled Solaris | 9.2 TS1M0 |  | 
| HP-UX IPF | 9.2 TS1M0 |  | 
| Linux | 9.2 TS1M0 |  | 
| Linux for x64 | 9.2 TS1M0 |  | 
| OpenVMS on HP Integrity | 9.2 TS1M0 |  | 
| Solaris for x64 | 9.2 TS1M0 |  |