Изменение определенного цвета наблюдения (текст значения) с помощью sgplot - лесной участок
В настоящее время я пишу код sgplot для лесного участка (издание SAS University). Мне удалось получить правильный график, как я хочу, однако я не могу изменить цвет конкретного наблюдения. Это мой код
data my_data;
input study $ year rr lcl ucl;
datalines;
mickey 2015 1.5 0.7 2.3
minny 2010 1.2 1.0 1.4
donald 2013 0.8 0.2 1.4
daisy 2014 1.3 1.0 1.6
goofy 2017 1.9 0.9 2.9
pluto 2010 1.4 0.7 2.1
;
run;
proc sgplot data=my_data
noautolegend nocycleattrs;
scatter y=study x=rr/ markerattrs=(symbol=squarefilled size=12 color=black);
highlow high=ucl low=lcl y=study / type=line lineattrs=(color=black);
yaxistable study year / labelattrs=(family=arial size=12pt weight=bold) position=left location=inside valueattrs=(family=arial size=10pt);
yaxistable rr lcl ucl / labelattrs=(family=arial size=12pt weight=bold) position=right location=inside valueattrs=(family=arial size=10pt);
xaxis offsetmin=0.1 offsetmax=1 min=0.5 max=3.0 display=(nolabel);
yaxis offsetmin=0.1 offsetmax=0.1 display=none reverse;
refline 1 / axis=x;
styleattrs axisextent=data;
run;
То, чего я пытаюсь добиться, - это изменить наблюдение № 3 (Дональд, 2013, 0,8 0,2 1,4) на красный цвет (текст при построении, а не только атрибуты маркера).
Я попытался проверить различные атрибуты sgplot, но я не могу изменить этот конкретный цвет наблюдения № 3 (так как красный и другие наблюдения остаются черными) при построении графика. Я также посмотрел на шаблон, но это не помогает. Как мне этого добиться?
1 ответ
Предполагая, что за решением стоит некоторая логика программирования, один из подходов заключается в создании фиктивной групповой переменной. Здесь я предполагаю, что логика rr < 1.0
,
Я удаляю добавить colorgroup
а также attrid
к yaxistable в вопросе. Вы можете довольно легко изменить цвета, назначенные группам (чтобы восстановить черный цвет для большинства), либо используя карту атрибутов, как я делаю ниже (наиболее правильно), или несколько других опций, включая редактирование цветов графика по умолчанию.
data my_data;
length groupvar $20;
input study $ year rr lcl ucl;
if rr < 1.0 then groupvar='redgroup';
else groupvar='blackgroup';
datalines;
mickey 2015 1.5 0.7 2.3
minny 2010 1.2 1.0 1.4
donald 2013 0.8 0.2 1.4
daisy 2014 1.3 1.0 1.6
goofy 2017 1.9 0.9 2.9
pluto 2010 1.4 0.7 2.1
;
run;
data attrmap;
length value $20;
input value $ textcolor $;
retain id 'colorgroup';
datalines;
redgroup red
blackgroup black
;;;;
run;
proc sgplot data=my_data
noautolegend nocycleattrs dattrmap=attrmap;
scatter y=study x=rr/ markerattrs=(symbol=squarefilled size=12 color=black) group=groupvar attrid=colorgroup;
highlow high=ucl low=lcl y=study / type=line lineattrs=(color=black);
yaxistable study year / labelattrs=(family=arial size=12pt weight=bold) position=left location=inside valueattrs=(family=arial size=10pt)
attrid=colorgroup colorgroup=groupvar;
yaxistable rr lcl ucl / labelattrs=(family=arial size=12pt weight=bold) position=right location=inside valueattrs=(family=arial size=10pt) ;
xaxis offsetmin=0.1 offsetmax=1 min=0.5 max=3.0 display=(nolabel);
yaxis offsetmin=0.1 offsetmax=0.1 display=none reverse;
refline 1 / axis=x;
styleattrs axisextent=data;
run;