Ich versuche, zwei Achsen gleichzeitig mit twoway
zu zeichnen. Eine Achse verwendet die Variable route
zum Ersetzen des üblichen Symbols mit mlabel
und msymbol(none)
. Die andere Achse benötigt keine spezifische Bezeichnung in der Zeichnungsregion, sondern sollte idealerweise in der Legende als "Inkr. Dosis" eingegeben werden.Stata: Reihenfolge der Legendenelemente mit mehreren Achsen
Ein unerwünschtes Ergebnis tritt auf, wenn die Spezifikation legend(order)
zum Erstellen der Legendenbeschriftungen verwendet wird. Die Legende als codiert hat das Symbol für die zweite Achse als drittes geordnetes Legendenelement. Ich würde erwarten, dass der Code das Symbol für die zweite Achse als fünften Artikel platziert. Das Problem kann behoben werden, indem eine Dummy-Kategorie für eine unbenutzte 5. route
hinzugefügt und das Symbol von Hand mit dem Grafikeditor verschoben wird. Ich würde gerne wissen, warum die legend(order)
Option verhält sich so, ob es eine Interaktion mit mlabel
oder msymbol(none)
und wenn eine Kodierungslösung für den Einsatz in der wiederholten Anwendung verfügbar ist.
*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"))