%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;