我目前正在编写森林情节的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的这种特定颜色(如红色,其他观察结果仍为黑色)。我也看过模板,但这没有帮助。我怎样才能做到这一点?
答案 0 :(得分: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;