I would create additional 'y' variables in the dataset, and only assign them values for the markers you want to label. And then layer those on top of the lines, with the desired colors (such as gray markers, and the text matching the line color). I think this makes it a little simpler. Here's some sample code, using sample data from sashelp...
data noemers_acute_ZH_YR2;
set sashelp.stocks (where=(stock='IBM' and date>='01jan1997'd and date<='31jan1999'd));
if put(date,monname3.) in ('Jan') then do;
close_with_label=close;
LabelVar1 = put(close,$NLNUM10.);
volume_with_label=volume;
LabelVar2 = put(volume,$NLNUM10.);
end;
run;
proc sgplot data=noemers_acute_ZH_YR2 noautolegend;
format date year4.;
series x=date y=close / markers markerattrs=(color="#3AAA35" symbol=circlefilled ) lineattrs=(color="#3AAA35" thickness=2);
series x=date y=volume / markers markerattrs=(color="#B4CF00" symbol=squarefilled) lineattrs=(color="#B4CF00" thickness=2) Y2Axis;
series x=date y=close_with_label / markers markerattrs=(color="gray" symbol=circlefilled ) lineattrs=(thickness=0)
datalabel=LabelVar1 datalabelpos=bottom datalabelattrs=(color="#3AAA35");
series x=date y=volume_with_label / markers markerattrs=(color="gray" symbol=squarefilled) lineattrs=(thickness=0) Y2Axis
datalabel=LabelVar2 datalabelpos=top datalabelattrs=(color="#B4CF00");
xaxis label="Date" /*values=('01jan1995'd to '01jan2000'd by year5)*/;
yaxis label="Close" grid values=(50 to 200 by 50);
y2axis label="Volume" grid values=(5000000 to 20000000 by 5000000 );
run;
... View more