goptions htext=4 pct ftext=swiss rotate=landscape; /* Read in raw data and assign values to the SHAPE */ /* variable. Include dummy observations for 1990 */ /* to push the bars to the center of the TYPE axis. */ data revenue; input year dollars type; if type=1 or type=2 then shape='prism'; else shape='point'; cards; 1986 100 1 1986 150 2 1987 200 1 1987 250 2 1988 300 1 1988 350 2 1989 325 1 1989 375 2 1990 350 1 1990 400 2 1990 0 0 1990 0 3 ; /* Create the TYPEFMT. format to assign labels to */ /* TYPE values and blank out tick labels for */ /* dummy points. */ proc format; value typefmt 1='Projected' 2='Actual' 0,3=' '; run; /* Use the PROC G3D SCATTER statement to produce */ /* the graph. */ proc g3d data=revenue; scatter type*year=dollars / xticknum=5 /* number of ticks on YEAR axis */ yticknum=4 /* number of ticks on TYPE axis */ zticknum=5 /* number of ticks on */ /* DOLLARS axis */ zmin=0 /* minimum DOLLARS axis value */ zmax=400 /* maximum DOLLARS axis value */ rotate=60 /* rotation around DOLLARS axis */ size=3 /* width of blocks */ grid /* reference lines on all axes */ shape=shape; /* SHAPE variable dictates */ /* the shape */ /* Assign formats to tickmark labels. */ format type typefmt. dollars dollar5.; /* Use LABEL statements to suppress axis labels. */ label type='00'x year='00'x dollars='00'x; title1 height=8 pct font=swissb 'YEARLY REVENUES'; title2 height=5 pct font=swissb '(In millions of dollars'); run;