twoway
을 사용하여 두 축을 동시에 그래프로 표시하려고합니다. 한 축은 변수 route
을 사용하여 mlabel
및 msymbol(none)
을 사용하여 일반적인 기호를 대체합니다. 다른 축은 플롯 영역에서 특정 레이블을 요구하지 않지만 이상적으로는 "Incr. Dose"로 범례에 입력해야합니다.Stata : 여러 축을 가진 범례 항목의 순서
legend(order)
사양을 사용하여 범례 레이블을 만들 때 바람직하지 않은 결과가 발생합니다. 코드화 된 범례는 두 번째 축에 대한 기호가 3 번째로 주문 된 범례 항목으로 표시됩니다. 코드에서 두 번째 축의 심볼을 다섯 번째 항목으로 배치 할 것으로 기대합니다. 이 문제는 사용되지 않은 5th route
에 대해 더미 카테고리를 추가하고 그래프 편집기를 사용하여 기호를 손으로 움직여 해결할 수 있습니다. mlabel
또는 msymbol(none)
과의 상호 작용 여부와 반복적 인 응용 프로그램에서 사용할 수있는 코딩 솔루션이 있는지 여부를 확인하려면 왜 legend(order)
옵션이 이러한 방식으로 작동하는지 알고 싶습니다.
*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"))