%let gpath='.'; %let dpi=200; ods html close; ods listing gpath=&gpath image_dpi=&dpi; /*--Summarize by Customer and Year--*/ proc means data=sashelp.electric(where=(year < 2003)); class customer year; var revenue; output out=ElecRev(where=(_type_ > 2)) sum=Revenue; run; /*--Compute Revenue change from first year--*/ data ElecRevChange; retain Base; format Change percent6.1; label Change='Change from 1994'; set elecrev(where=(customer ne 'Other')); by customer year; if first.customer then do; Base=revenue; Change=1; end; else Change=revenue/Base; zero=0; run; /*ods html;*/ /*proc print noobs;*/ /* var customer year revenue change;run;*/ /*ods html close;*/ /*--Single Axis Graph using SG--*/ ods graphics / reset width=5in height=2.5in attrpriority=color imagename='ElectricPlot_SG'; title 'Revenues and Growth over Time for Residential Customer'; proc sgplot data=ElecRevChange(where=(customer='Residential')); styleattrs datacolors=(orange orange) datacontrastcolors=(cx8f3f00 darkgreen); highlow x=year low=zero high=revenue / name='a' legendlabel='Revenue' type=bar nooutline fillattrs=graphdata1 dataskin=pressed; series x=year y=change / name='b' lineattrs=graphdata2(thickness=5); xaxis integer display=(nolabel); yaxis offsetmin=0 min=0 valueattrs=graphdata1 labelattrs=graphdata1 grid; keylegend / linelength=20px; run; /*--Dual Axis Graph using SG--*/ ods graphics / reset width=5in height=2.5in attrpriority=color imagename='ElectricPlotY2_SG'; title 'Revenues and Growth over Time for Residential Customer'; proc sgplot data=ElecRevChange(where=(customer='Residential')); styleattrs datacolors=(orange orange) datacontrastcolors=(cx8f3f00 darkgreen); highlow x=year low=zero high=revenue / name='a' legendlabel='Revenue' type=bar nooutline fillattrs=graphdata1 dataskin=pressed; series x=year y=change / name='b' lineattrs=graphdata2(thickness=5) y2axis; xaxis integer display=(nolabel); yaxis offsetmin=0 min=0 valueattrs=graphdata1 labelattrs=graphdata1 grid; y2axis offsetmin=0 min=0 values=(0 .30 .60 .90 1.20 1.50) valueattrs=graphdata2 labelattrs=graphdata2; keylegend / linelength=20px; run; /*--Template for Two Axis Data Panel--*/ proc template; define statgraph ElectricPanel; begingraph / datacolors=(orange orange) datacontrastcolors=(cx8f3f00 darkgreen); entrytitle 'Revenues and Growth over Time by Customer'; layout datapanel classvars=(customer) / rows=1 headerlabeldisplay=value borderattrs=(thickness=0) headerbackgroundcolor=lightgray headeropaque=true columngutter=5px columnaxisopts=(display=(ticks tickvalues) tickvalueattrs=(size=7) linearopts=(integer=true)) rowaxisopts=(griddisplay=on offsetmin=0 tickvalueattrs=graphdata1 labelattrs=graphdata1 linearopts=(viewmin=0 viewmax=125 tickvaluelist=(0 25 50 75 100 125))) row2axisopts=(griddisplay=on offsetmin=0 tickvalueattrs=graphdata2 labelattrs=graphdata2 linearopts=(viewmin=0 viewmax=2 tickvaluelist=(0 0.4 0.8 1.2 1.6 2.0))); layout prototype / cycleattrs=true; highlowplot x=year low=zero high=revenue / name='a' legendlabel='Revenue' type=bar display=(fill) fillattrs=graphdata1 dataskin=pressed barwidth=0.9; seriesplot x=year y=change / name='b' lineattrs=graphdata2(thickness=5) yaxis=y2; endlayout; sidebar / spacefill=false; discretelegend 'a' 'b' / itemsize=(linelength=20px); endsidebar; endlayout; endgraph; end; run; /*--Graph of Revenue and Change by Year and Customer--*/ ods graphics / reset width=5in height=2.5in attrpriority=color imagename='ElectricPanel_GTL'; proc sgrender data=ElecRevChange template=ElectricPanel; run;