/**********************************************************************/ /* modify the horizontal axis */ axis1 order=(0 to 650 by 50) label=('Days') minor=(number=1) origin=(19,); /* modify the vertical axis */ axis2 order=('Opossum' 'Mouse' 'Chipmunk' 'Rabbit' 'Kangaroo' 'Dog' 'Wolf' 'Guinea Pig' 'Lion' 'Goat' 'Deer' 'Black Bear' 'Chimpanzee' 'Gorilla' 'Buffalo' 'Cow' 'Horse' 'Sea Lion' 'Zebra' 'Camel' 'Giraffe' 'Rhinoceros' 'Elephant') label=none offset=(2,2) major=none; /* define plot symbol */ symbol value=dot height=2; /* produce the plot */ proc gplot data=gest; plot type*days / autovref lvref=2 frame haxis=axis1 vaxis=axis2; run; /**********************************************************************/ /* define symbol characteristics */ symbol1 interpol=join font=marker value=C height=2.5; /* produce the plot */ proc gplot data=energy; plot consumed*year / frame haxis=axis1 vaxis=axis2; run; /**********************************************************************/ proc gchart data=energy; vbar year / discrete sumvar=consumed sum maxis=axis1 raxis=axis2 frame coutline=black width=5; run; /**********************************************************************/ /* modify the vertical axis */ axis2 label=('Quadrillion' justify=right 'Btu') major=(height=1.5) minor=(number=1 height=1) order=(35 to 85 by 10); /**********************************************************************/ data engychng; keep year change; set energy; /* assign to PREV the value of CONSUMED */ /* for the previous year */ prev=lag(consumed); /* initialize PREV with value for 1955 */ if _n_=1 then prev=38.82; /* calculate the difference between periods */ change=consumed-prev; run; /**********************************************************************/ /* define symbol characteristics */ symbol1 interpol=needle font=swiss value=- height=3 width=2; /* modify the horizontal axis */ axis1 order=(1960 to 1990 by 5) minor=none label=none offset=(3,3); /* modify the vertical axis */ axis2 order=(-5 to 15 by 5) label=none value=(t=1 'Decrease -5' t=2 'No Change 0' t=5 'Increase 15') minor=(number=1 height=1) offset=(0,); /* produce plot */ proc gplot data=engychng; plot change*year / haxis=axis1 vaxis=axis2 vref=0 frame; run; /**********************************************************************/ /* define symbols for the line plots */ symbol1 interpol=join font=marker value=C height=2.5; symbol2 interpol=join value=dot height=3; /* suppress symbols for the PLOT2 plot */ symbol3 interpol=none value=none; /* modify the legend */ legend1 label=none value=('Consumed' 'Produced'); /* produce overlay plot with right vertical axis */ proc gplot data=energy; plot consumed*year=1 produced*year=2 / shcode overlay legend=legend1 haxis=axis1 vaxis=axis2 frame; plot2 consumed*year=3 / haxis=axis1 vaxis=axis3; run; /**********************************************************************/ proc transpose data=energy out=energy2(rename=(col1=btu)) name=prodcon; var produced consumed; by year; run; /**********************************************************************/ /* define bar patterns */ pattern1 value=solid color=black; pattern2 value=solid color=grayaa; /* modify the midpoint axis */ axis1 minor=none label=none value=none; /* modify the response axis */ axis2 label=(angle=90 'Quadrillion Btu') major=(height=1.5) minor=(number=1 height=1); /* modify the group axis */ axis3 label=none; /* modify legend */ legend1 label=none shape=bar(3,3) value=('Energy Consumed' 'Energy Produced'); /* produce vertical bar chart */ proc gchart data=energy2; prodcon / sumvar=btu group=year subgroup=prodcon maxis=axis1 raxis=axis2 gaxis=axis3 legend=legend1 coutline=black frame space=0; run; /**********************************************************************/ /* calculate the difference */ data engydif; drop consumed produced; set energy; diff=consumed-produced; run; /**********************************************************************/ /* produce the chart */ proc gchart data=engydif; vbar year / discrete sumvar=diff sum maxis=axis1 raxis=axis2 frame width=6 coutline=black; run; /**********************************************************************/ /* create a format for SOURCE */ proc format library=library; value $engyfmt 'coal'='Coal' 'gas'='Natural Gas' 'geotherm'='Geothermal' 'hydro'='Hydroelectric' 'nuclear'='Nuclear' 'petro'='Oil'; run; /* position the legend to the right of the chart */ legend label=('Source' position=(top center)) across=1 position=(right middle) shape=bar(3,3); /* produce the chart */ proc gchart data=engyprod; format source $engyfmt.; vbar year / discrete sumvar=produced subgroup=source maxis=axis1 raxis=axis2 legend=legend1 width=6 frame coutline=black; run; /**********************************************************************/ /* modify the midpoint axis */ axis1 minor=none label=none order=('Oil' 'Natural Gas' 'Coal' 'Hydroelectric' 'Nuclear' 'Geothermal') value=(height=2); /* modify the response axis */ axis2 label=('Quadrillion Btu') order=(0 to 25 by 5) minor=none; /* modify the group axis */ axis3 label=none; /* produce the chart */ proc gchart data=engyprod; format source $engyfmt.; hbar source / sumvar=produced group=year nostats maxis=axis1 raxis=axis2 gaxis=axis3 frame coutline=black; run; /**********************************************************************/ /* modify the midpoint axis */ axis1 label=none length=80 value=(tick=2 'Geo-' justify=center 'thermal' tick=3 'Hydro-' justify=center 'electric' tick=4 'Natural' justify=center 'Gas'); /* modify the response axis */ axis2 label=(angle=90 'Quadrillion Btu') order=(0 to 25 by 5) minor=(number=1); /* produce the chart */ proc gchart data=engyprod(where=(year=1990)); format source $engyfmt.; vbar source / sumvar=produced sum descending maxis=axis1 raxis=axis2 width=8 frame coutline=black; run; /**********************************************************************/ proc gchart data=engyprod(where=(source='petro' or source='coal')); format source $engyfmt.; vbar year / discrete sumvar=produced group=source maxis=axis1 raxis=axis2 gaxis=axis3 width=4 space=1 gspace=3 ref=20 clipref frame coutline=black; run; /**********************************************************************/ /* convert values of PRODUCED to integers greater than 1 */ data temp; set engyprod(where=(year=1990)); produced=produced*100; run; /* produce chart */ proc gchart data=temp; format source $engyfmt.; pie source / freq=produced type=percent jstyle other=5 otherlabel='Hydro & Geotherm' noheading coutline=black; run; /**********************************************************************/ proc gplot data=engyprod; format source $engyfmt.; plot produced*year=source / haxis=axis1 vaxis=axis2 frame legend=legend1; run; /**********************************************************************/ /* modify the vertical axis */ axis2 logbase=10 label=(angle=90 'Quadrillion Btu (Logbase 10)') major=(height=1.5) minor=(number=1 height=1); /**********************************************************************/ /* specify symbol characteristics */ symbol1 value=circle height=2.5; /* produce the plot */ proc gplot data=gpa; plot satv*satm /frame haxis=axis1 vaxis=axis1; run; /**********************************************************************/ /* modify response axis */ axis2 minor=(n=1) label=none; /* modify midpoint axis */ axis1 offset=(4,4) label=none major=none length=70; /* produce the chart */ proc gchart data=gpa; vbar satv satm / type=freq freq frame raxis=axis2 maxis=axis1 width=4 coutline=black; run; /**********************************************************************/ /* define symbol characteristics */ symbol1 value=circle height=2.5 interpol=rlclm; /* produce the plot */ proc gplot data=gpa; plot gpa*satm / frame haxis=axis1 vaxis=axis1; run; /**********************************************************************/ /* convert STCODE to full state name */ data names; set engymap; name=stnamel(stcode); run; /* produce the ranked bar chart */ proc gchart data=names; hbar name / nostats sumvar=btu descending width=.5 autoref frame clipref coutline=black maxis=axis1 raxis=axis2; run; /**********************************************************************/ /* define patterns for the map areas */ pattern1 value=msolid color=grayee; pattern2 value=msolid color=graybb; pattern3 value=msolid color=gray88; pattern4 value=msolid color=gray44; /* describe midpoint ranges */ legend1 value=('0-300' '301-600' '601-900' 'Over 900') shape=bar(3,3) label=('Millions of Btu'); /* produce an outline map */ proc gmap data=engymap map=maps.us; id state; choro btu / midpoints=(150,450,750,1050) legend=legend1 coutline=black; run; /**********************************************************************/