/* Map category values to numeric */ data cars2; set sashelp.cars; origin_n = ifn(origin = 'Asia', 1, ifn(origin = 'Europe', 2, 3)); run; /* Convert numeric values back to categories for axis display */ proc format; value origin 1 = 'Asia' 2 = 'Europe' 3 = 'USA' ; run; /* Jittered scatter overlaid with box plot */ proc template; define statgraph unbox; begingraph; entryTitle "Weight of Automobiles by Origin (Year 2004)"; layout overlay / xaxisopts=(display=(tickvalues) /* type=linear */ linearOpts=(tickvalueSequence=(start=1 increment=1 end=3) tickValueFormat=origin.)); scatterPlot x=eval(0.08*rannor(57)+origin_n) y=weight / name="sp1" markerAttrs=GraphData3 legendLabel="Raw (jittered) data" dataTransparency=0.5; boxplot x=origin_n y=weight / display=(caps mean median) meanAttrs=(color=red symbol=diamondFilled); discreteLegend "sp1"; endlayout; endgraph; end; run; proc sgrender template=unbox data=cars2; run;