グラフで、点から両軸に線を落とすのってどうやるんですか?って聞かれました。
その人は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 件のコメント:
コメントを投稿