Изменение определенного цвета наблюдения (текст значения) с помощью 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;
Другие вопросы по тегам