使用sgplot更改特定观察颜色(值文本) - 森林图

时间:2017-06-05 14:37:50

标签: sas forestplot sgplot

我目前正在编写森林情节的sgplot代码(SAS大学版)。我已经设法得到了正确的图形,但是我不能改变特定观察的颜色。这是我的代码

    <select id="empName" [(ngModel)]="selectedEmployee">
      <option selected="selected" disabled>Employee Name...</option>
      <option *ngFor="let emp of empInfo; let i = index" [ngValue]="i">{{emp.EmpID | orderByLast}}</option>
    </select>

我想要实现的是将观察数3(donald,2013,0.8 0.2 1.4)改为红色(绘图时的文字,不仅是标记属性)。

我试图检查不同的sgplot属性,但是在绘图时我无法更改观察数3的这种特定颜色(如红色,其他观察结果仍为黑色)。我也看过模板,但这没有帮助。我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

假设决策背后有一些编程逻辑,一种方法是创建一个虚拟组变量。在这里,我假设逻辑是rr < 1.0

我将colorgroupattrid添加到相关的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;