2

我想绘制 Y by X plot 我按年份分组,但颜色代码年份基于不同的变量(干)。因此,每年都显示为单独的线,但干=1 年绘制一种颜色,而干=0 年绘制不同的颜色。我实际上想出了一个选项(是的!),如下所示。但这并没有给我太多的控制权。

有没有办法在系列语句中放置 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; 
4

1 回答 1

3

使用属性映射,请参阅文档

您可以使用 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;

然后dattrmap=attrs在 PROC SGPLOT 语句中添加 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; 

请注意,我测试并编辑了这篇文章,所以它现在应该可以工作了。

于 2018-01-03T02:43:06.483 回答