1

我已经总结了我想绘制为箱线图和晶须图的数据。我为某些类添加了一个“异常值”点。我想要 2 个单独的图,一个有异常值,一个没有。

这是我所拥有的:

data test;
input _stat_ $ _label_ $ col1 has_outlier;
datalines;
Max    A 2.1837546442 0
Mean   A 0            0
Median A 0.0101415946 0
Min    A -2.698021137 0
Q1     A -0.656874482 0
Q3     A 0.6635898047 0
Max    B 2.2346071965 1
Mean   B 0            1
Median B -0.025621533 1
Min    B -2.380132327 1
Q1     B -0.658781626 1
Q3     B 0.7248025307 1
Outlier B -2.120639115 1
Max    C 1.9904289904 0
Mean   C 0            0
Median C 0.0164299847 0
Min    C -2.032578831 0
Q1     C -0.454702942 0
Q3     C 0.7259160175 0
;



proc template;
  define statgraph boxplotparm1;
    begingraph;
      layout datapanel classvars=(has_outlier) / columns=2 rowdatarange=union;
          layout prototype / cycleattrs=true;
           boxplotparm x=_label_ y=col1 stat=_stat_ /
             datalabel=datalabel spread=true  dataskin=sheen outlierattrs=(color=red symbol=Asterisk);     
          endlayout;
      endlayout;
    endgraph;
  end;
run;
 
/* Generate the plot. */
proc sgrender data=test template=boxplotparm1;
run;

制作这个: 在此处输入图像描述

我想从没有箱线图的图表中删除类。所以“无异常值”组应该只显示“A”和“C”,“异常值”组应该只显示“B”。

4

1 回答 1

1

我想你会得到你想要的COLUMNDATARANGE=UNION控制 X 轴的东西。UNIONALL是默认值,并指示它在所有图形中具有一致的 X 轴;UNION指示它不要。

但是,如果您走这条路线,您可能没有漂亮的图表,因为我怀疑要获得正确的宽度将是一项挑战。

proc template;
  define statgraph boxplotparm1;
    begingraph;
      layout datapanel classvars=(has_outlier) / columns=2 rowdatarange=union columndatarange=union;
          layout prototype / cycleattrs=true;
           boxplotparm x=_label_ y=col1 stat=_stat_ /
             datalabel=datalabel spread=true  
             dataskin=sheen outlierattrs=(color=red symbol=Asterisk)
             ;     
          endlayout;
      endlayout;
    endgraph;
  end;
run;

所需图形的图像

于 2017-10-23T15:13:31.330 回答