我有一个sgplot,它绘制了2个系列,我需要用多行来注释。我理解如何添加标准reflines(见下文),但
我的问题是,我无法解决如何在两个不同点之间添加转换。即,在y轴值0和-50之间的x轴值为50的垂直虚线。我需要设置每一行的开始和结束,而不仅仅是它开始的轴上的点。
proc sgplot data = all_sd_dplot noautolegend ;
by variablecode ;
where variablecode='V01'
and comparisonstudyid in (29318 29322);
series x=bin y= sigmavalue / group=legendname name="series";
series x=bin y= fit / group=legendname name="series" LINEATTRS= (color = black thickness=2);
yaxis values=(-160 to 20 by 20) label = "Accumulated minutes over baseline";
xaxis values = (0 12 24 36 48 60) label = "Hours";
REFLINE 0 / AXIS= Y TRANSPARENCY = 0.2 LINEATTRS= (COLOR=black pattern=dot thickness=2); *baseline;
REFLINE 4 / AXIS= X TRANSPARENCY = 0.5 LINEATTRS= (COLOR=red); *end of SD;
REFLINE 0 / AXIS= X TRANSPARENCY = 0.5 LINEATTRS= (COLOR=blue); *start of SD;
REFLINE -135 / AXIS= Y TRANSPARENCY = 0.2 LINEATTRS= (COLOR=black pattern=dot thickness=2); *Y0;
run;
任何帮助都将非常感谢!!
答案 0 :(得分:1)
我认为没有办法使用refline来做到这一点。我认为您需要在数据集中创建一些假数据,以使您的起点/终点和其余值丢失。然后使用系列画线。我还建议在communities.sas.com上发帖,以便SAS Graph的其中一个人可以提供帮助。
proc sort data=sashelp.class out=class;
by sex;
run;
data class;
set class;
by sex;
if last.sex then do;
x=13; y=75;output;
x=18; y=75; output;
end;
else output;
run;
proc sgplot data=class;
by sex;
scatter x=age y=weight;
scatter x=age y=height;
series x=x y=y/lineattrs=(color=red thickness=2 pattern=solid);
run;
答案 1 :(得分:1)
以下SAS-UG文件(http://pharmasug.org/download/papers/SA-AD-02.pdf)中的“VECTOR”用法可能有用(参见第3页的示例)。
答案 2 :(得分:0)
这对我来说更容易使用注释,而不是使用SGPLOT函数。你当然可以像Reeza所说的那样,在数据集中将它们作为行添加,但由于某些原因,这可能并不理想;为了这个目的,注释确实存在,并且在我看来它们更加井井有条(尽管有时候它更容易作弊)。
部分使用Reeza的例子,这是我如何做的:
proc sort data=sashelp.class out=class;
by sex;
run;
data class_annotations;
x1space='DataValue';
y1space='DataValue';
x2space='DataValue';
y2space='DataValue';
x1=13;
y1=80;
x2=13;
y2=120;
function='line';
output;
x1=15;
x2=15;
output;
run;
proc sgplot data=class sganno=class_annotations;
by sex;
scatter x=age y=weight;
scatter x=age y=height/ y2axis;
run;