我想用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;
答案 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;
请注意,我测试并编辑了这篇文章,因此现在应该可以使用了。