SAS proc SGPANEL 根据数据值控制线或标记颜色

SAS proc SGPANEL controlling line or marker color based on a data value

我正在 SAS 中使用 proc SGPANEL 制作图表。它是动物数据,因此按动物排列。在每只动物的图表中,有 3 条线代表不同的血液测试值。我想知道我是否可以控制颜色,如果值超出正常范围(由单独的标志变量标识),则数据点将为红色,但如果值在正常范围内,则数据点将变黑。

我已经为单次血液测试绘制了类似的图,在这种情况下,我提供了正常限值的参考线。这个案例的问题是每次验血都有不同的正常限值,所以我不能使用那个策略。

我现有的代码(不包含与标志变量链接的颜色,它只是呈现数据)如下:

proc sgpanel data=all;
  panelby animal / spacing=5 novarname columns=5;
  series x=dy y=value/ group=parameter markers;
  colaxis label='Day';
  rowaxis label='Value';
run;

实现此目的的一种方法是用仅在设置标志时才存在的新标记覆盖您的标记。这是一个例子。基本上我添加了一个新值 value_outrange,只有当你想要一个红色标记时它才有一个值,然后我要求一个带有它和红色标记颜色的散点图。

您还可以将所有标记覆盖在两个散点图中,一个带有 value_outrange,一个带有 value_inrange,这样可以避免在这些位置出现两个标记;总而言之,它看起来还不错,所以我认为只有一个很好。

data all;
  input animal $ dy value flag parameter;
  if flag=1 then value_outrange=value;
  else call missing(value_outrange);
datalines;
bear 1 5 0 1
bear 2 6 0 1
bear 3 7 0 1
bear 4 8 0 1
bear 5 13 1 1
bear 6 10 0 1
dog 1 8 0 2
dog 2 9 0 2
dog 3 9 0 2
dog 4 11 1 3
dog 5 10 0 3
dog 6 11 0 3
;;;;
run;

proc sgpanel data=all;
  panelby animal / spacing=5 novarname columns=5;
  series x=dy y=value/ group=parameter markers;
  scatter x=dy y=value_outrange/group=parameter markerattrs=(color=red);
  colaxis label='Day';
  rowaxis label='Value';
run;