を使用して 2 つの軸を同時にグラフ化しようとしていtwoway
ます。1 つの軸は変数を使用して、とroute
を使用して通常の記号を置き換えます。もう一方の軸は、プロット領域に特定のラベルを必要としませんが、理想的には凡例に「増分用量」としてキーを付ける必要があります。mlabel
msymbol(none)
legend(order)
この仕様を使用して凡例ラベルを作成すると、望ましくない結果が生じます。コード化された凡例には、2 番目の軸の記号が 3 番目に並べられた凡例項目として含まれています。コードが 2 番目の軸のシンボルを 5 番目の項目として配置することを期待します。この問題は、未使用の 5 度にダミー カテゴリを追加route
し、グラフ エディタを使用してシンボルを手動で移動することで解決できます。legend(order)
オプションがこのように動作する理由、またはとの相互作用があるかどうか、およびコーディングソリューションが繰り返しアプリケーションで使用できるかどうかを知りmlabel
たいmsymbol(none)
.
*create data
clear
set seed 42
set obs 50
gen cuml_dose = rnormal(0,1) *10 + 100
sort cuml_dose
gen interval = [_n]
gen id = 1
gen incr_dose =0
replace incr_dose = cuml_dose[_n+1] - cuml_dose if [_n] > 1
gen route = rpoisson(1)
tab route,m
*create problem graph
sort interval
twoway scatter cuml_dose interval, mlabel(route) msymbol(none) yaxis(1) || ///
scatter incr_dose interval, yaxis(2) ///
legend(on) legend(order(0 "0=oral" 1 "1=IV" 2 "2=IM" 3 "3=patch"))
*partial solution
twoway scatter cuml_dose interval, mlabel(route) msymbol(none) yaxis(1) || ///
scatter incr_dose interval, yaxis(2) ///
legend(on) legend(order(0 "0=oral" 1 "1=IV" 2 "2=IM" 3 "3=patch" 4 "Incr. dose"))