sgplotで、生存率曲線の中央値地点からX軸に線落とせとか、そういうグラフの特定点から軸に線引くのはdroplineでいけるという話

グラフで、点から両軸に線を落とすのってどうやるんですか?って聞かれました。
その人はreflineで頑張ってましたが、それだと補助線でデータの位置でとめることができないです。
普通にデータまで縦の直線と、横の直線をグラフとして引いてもいいんですが

sgplotにはいつのまにか(多分9.3)からdroplineステートメントという便利な機能があります。

なんか、sgplotにドカンドカン機能追加されてて、嬉しいんですけど、把握しきれないですね。
あと、グラフの呼称って難しいですね。字面だけみても、どういうグラフ描くものなのかわからないし、検索するときも、なんて入れたもんかってね。

たとえば

data q1;
do x=1 to 10;
 y=x**2;
 output;
end;
run;

proc sgplot data=q1;
  series x=x y=y/markers;
  dropline x=x y=y / dropto=both
      lineattrs=(color=blue  pattern=dot);
  yaxis min=0;
run;

とすると、こんな感じ。





















droplineステートメントにx値とy値を指定して、dropto=でどっちの軸に線を落とすかを指定します。
bothは両方で。

あと、まあ、よくあるのが、凝りだしたら終わりのないグラフの定番kaplan-meierで
50%から線落とせってやつ。
面倒なので、ざくっと描くとこんな感じですか?

ods output SurvivalPlot=OUT1 ;
ods output Quartiles=OUT2;
proc lifetest data=SASHELP.BMT ;
 where GROUP="AML-Low Risk";
  time T * STATUS(0);
run;
ods output close;

/*中央値をマクロ変数に*/
proc sql noprint;
select Estimate into:p50
from out2
where Percent=50;
quit;

proc sgplot data=out1 noautolegend;
/*階段 */
step x=time y=Survival /lineattrs=(thickness=3);
/*髭*/
scatter x=time y=Censored/markerattrs=(symbol=plus size=15) ;

dropline x=&p50.  y=0.5  /label="★ここが50%やで" dropto=both lineattrs=(color=blue  pattern=dot thickness=3);

/*軸*/
yaxis values=(0 to 1 by 0.2 0.5);
xaxis values=(0 to 3000 by 500 &p50.);
run;


0 件のコメント:

コメントを投稿