Rick, How about this one.

options missing=' ';
data have;
set presidents;
length id duration $ 40;
id=catx(' ',n,president);
duration=catx('-',put(InaugurationDate,year4.),
put(PresidencyEndDate,year4.));
format AgeAtInauguration AgeAtEndDate 4.1;
run;

ods graphics/reset imagemap height=1400 width=1400;
proc sgplot data=have ;
highlow y=id high=AgeAtEndDate low=AgeAtInauguration /
highcap=barbedarrow lineattrs=graphdata3
legendlabel='Duration';
scatter y=id x=AgeAtInauguration /
legendlabel='AgeAtInauguration'
markerattrs=graphdata1(symbol=CircleFilled)
datalabelpos=left
tip=(President InaugurationDate AgeAtInauguration);
scatter y=id x=AgeAtEndDate /
legendlabel='AgeAtEndDate'
markerattrs=graphdata2(symbol=CircleFilled) ;
xaxis offsetmin=0 offsetmax=0 valueshint display=(nolabel);
yaxistable AgeAtInauguration/ valueattrs=graphdata1
location=outside position=right labelattrs=graphdata1 ;
yaxistable AgeAtEndDate/ valueattrs=graphdata2
location=outside position=right labelattrs=graphdata2;
yaxistable duration/ valueattrs=graphdata3
location=outside position=right labelattrs=graphdata3;

yaxis display=(nolabel) discreteorder=data reverse
grid fitpolicy=none valueshalign=left;
refline 55.48 / axis=x labelloc=outside labelpos=min label='Mean:55.48';
run;