SAS - 可以在图形中的相同位置使用注释显示文本,无论是图例的大小还是图形的大小?

SAS - Possible to display text using annotate at the same position whithin the graph whichever the size of legend and size of graph?

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

DATA anno_test;
    length function  label ;
    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 轴重叠。我不熟悉注释,但我尝试了不同的选项和绘图空间,但无论图例的大小如何,我都无法完美显示它。

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

尝试使用 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  label ;
    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;

时相同的箭头