通过组控制线颜色/ where子句

时间:2018-01-03 01:47:05

标签: sas sgplot

我想用X绘制Y,其中我按年份分组,但是颜色代码年份基于不同的变量(干燥)。因此,每年显示为单独的线,但干= 1年绘制一种颜色和干= 0年绘制不同的颜色。我实际上想出了一个选项(是啊!),这是下面的。但这并没有给我很大的控制权。

有没有办法在series语句中放置where子句来选择特定的类别,以便我可以专门指定一种颜色(或其他格式)?或者还有另一种方式吗?这类似于R,其中可以对不同的数据子集使用多行语句。

谢谢!

此代码有效。

proc sgplot data = tmp;  
   where microsite_id = "&msit";
   by microsite_id ;
   yaxis label= "Pct. Stakes" values = (0 to 100 by 20);
   xaxis label= 'Date'  values = (121 to 288 by 15);
   series y=tpctwett x=jday / markers markerattrs=(symbol=plus) group = year grouplc=dry groupmc=dry;
   format jday tadjday metajday jdyfmt.;
   label tpctwett='%surface water' tadval1='breed' metaval1='meta';
run; 

1 个答案:

答案 0 :(得分:3)

使用属性地图,请参阅documentation

您可以使用DRY变量设置特定颜色。对于每年,在数据步骤中使用DRY变量指定颜色。

 proc sort data=tmp out=attr_data; by year; run;

 data attrs;
 set attr_data;
 id='year';
 if dry=0 then linecolor='green';
 if dry=1 then  linecolor='red';
 keep id linecolor;
 run;

然后在PROC SGPLOT语句中添加dattrmap=attrs,在SGPLOT选项中添加attrid = year。

ods graphics / attrpriority=none;

proc sgplot data = tmp dattrmap=attrs;  
where microsite_id = "&msit";
by microsite_id ;
yaxis label= "Pct. Stakes" values = (0 to 100 by 20);
xaxis label= 'Date'  values = (121 to 288 by 15);
series y=tpctwett x=jday / markers markerattrs=(symbol=plus) group = year grouplc=dry groupmc=dry attrid=year;
format jday tadjday metajday jdyfmt.;
label tpctwett='%surface water' tadval1='breed' metaval1='meta';
run; 

请注意,我测试并编辑了这篇文章,因此现在应该可以使用了。