通过另一个变量以双向方式重新排序面板,by()图
Reordering panels by another variable in twoway, by() graphs
假设我制作了以下图表,显示了 9 头猪随时间变化的重量:
webuse pig
tw line weight week if inrange(id,1,9), by(id) subtitle(, nospan)
是否可以在保留原始标签的情况下通过另一个变量对面板重新排序?我可以想象定义另一个以正确方式排序的变量,然后用正确的 id 标记它,但很好奇是否有更简单的方法来实现它。
我认为你是对的:你需要一个新的排序变量。积极的是,您可以根据任何选择标准进行订购。注意用于排序的变量的关系,它总是可以通过引用原始标识符来打破。在这里,我们按最终权重排序,默认情况下,最小的优先。 (对于最大的优先,否定 weight
变量。)
webuse pig, clear
keep if id <= 9
bysort id (week) : gen last = weight[_N]
egen newid = group(last id)
bysort newid : gen toshow = strofreal(id) + " (" + strofreal(last, "%2.1f") + ")"
* search labmask for download links
labmask newid , values(toshow)
set scheme s1color
line weight week, by(newid, note("")) sort xla(1/9)
讨论此处原则的短篇论文已经在准备中,将于 2021 年在 Stata 期刊 上发表。
假设我制作了以下图表,显示了 9 头猪随时间变化的重量:
webuse pig
tw line weight week if inrange(id,1,9), by(id) subtitle(, nospan)
是否可以在保留原始标签的情况下通过另一个变量对面板重新排序?我可以想象定义另一个以正确方式排序的变量,然后用正确的 id 标记它,但很好奇是否有更简单的方法来实现它。
我认为你是对的:你需要一个新的排序变量。积极的是,您可以根据任何选择标准进行订购。注意用于排序的变量的关系,它总是可以通过引用原始标识符来打破。在这里,我们按最终权重排序,默认情况下,最小的优先。 (对于最大的优先,否定 weight
变量。)
webuse pig, clear
keep if id <= 9
bysort id (week) : gen last = weight[_N]
egen newid = group(last id)
bysort newid : gen toshow = strofreal(id) + " (" + strofreal(last, "%2.1f") + ")"
* search labmask for download links
labmask newid , values(toshow)
set scheme s1color
line weight week, by(newid, note("")) sort xla(1/9)
讨论此处原则的短篇论文已经在准备中,将于 2021 年在 Stata 期刊 上发表。