【发布时间】:2016-08-03 21:43:29
【问题描述】:
我正在尝试使用twoway 同时绘制两个轴。一个轴使用变量route 来替换使用mlabel 和msymbol(none) 的常用符号。另一个轴不需要绘图区域中的特定标签,但理想情况下应在图例中键入“Incr. Dose”。
使用legend(order) 规范创建图例标签时会出现不希望的结果。编码的图例具有第二个轴的符号作为第三个有序图例项。我希望代码将第二个轴的符号作为第 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"))
【问题讨论】:
标签: graph stata legend-properties multiple-axes