0

在 SAS 中,我试图设置要在图表上显示的箭头的“固定”位置。我希望箭头始终显示在同一位置,无论图表的大小如何。现在,我使用annotate 来显示箭头,它的坐标x1 和y1 表示为图形区域的百分比(DRAWSPACE='GRAPHPERCENT')。下面是我生成图形的代码和注释数据集:

DATA anno_test;
    length function $10 label $20;
    retain y1 15 drawspace 'GRAPHPERCENT';
    function='ARROW';x1=15;x2=10;y2=15;linethickness=1;shape="FILLED";OUTPUT;
    function='ARROW';x1=93;x2=98;y2=15;linethickness=1;shape="FILLED";OUTPUT;
RUN;

ODS GRAPHICS ON BORDER=OFF;
PROC SGPLOT DATA=_cumul sganno=anno_test NOBORDER;
    STYLEATTRS DATALINEPATTERNS=(1 15 2 8 4 41);
    STEP X=score Y=cum_pct/GROUP=newgroup lineattrs=(thickness=1.5);
    YAXIS LABEL="Cumulative percentage of subjects" VALUES=(0 TO 100 BY 10) VALUEATTRS=(Size=9pt) LABELATTRS=(Size=10pt Weight=bold);
    XAXIS LABEL="Score" VALUES=(-60 TO 60 BY 20) VALUEATTRS=(Size=9pt) LABELATTRS=(Size=10pt Weight=bold);
    KEYLEGEND / TITLE=" " NOBORDER VALUEATTRS=(Size=7);
    REFLINE 0 / AXIS=X LINEATTRS=(Pattern=34 Thickness=0.6);
    REFLINE 50 / AXIS=Y LINEATTRS=(Pattern=34 Thickness=0.6);
RUN;
ODS GRAPHICS OFF;

我遇到的问题是,根据图例的大小和图表的大小,箭头可以与 x 轴重叠。我不熟悉注释,但我尝试了不同的选项和绘图空间,但无论图例的大小如何,我都无法完美地显示它。

有人有想法吗?或者我应该锁定图表的大小以避免这个“问题”?谢谢!

4

1 回答 1

1

尝试使用DATAPERCENT

data have;
  call streaminit(2020);
  do score = -50 to 50 by 5;
    z = 100;
    do newgroup = 'A', 'B', 'C';
      cum_pct = rand('integer',floor(z/2),z);
      output;
      z = z - cum_pct;
    end;
    newgroup = 'D';
    cum_pct = z;
    output;
  end;
run;

DATA anno_test;
    length function $10 label $20;
    retain y1 15 DRAWSPACE 'DATAPERCENT';
    function='ARROW';x1=10;x2=  0;y2=15;linethickness=1;shape="FILLED";OUTPUT;
    function='ARROW';x1=90;x2=100;y2=15;linethickness=1;shape="FILLED";OUTPUT;
RUN;

指向数据区域边缘的箭头

在此处输入图像描述

当数据区域是更宽的 X 轴时,相同的箭头

在此处输入图像描述

注释 y 值为相同的箭头y1 = -10; y2 = -10;

在此处输入图像描述

于 2020-11-27T05:43:30.850 回答