我正在寻找类似下面by()
图的内容,但不是三组的三个面板,我想要三个具有三个不同y变量的面板。
webuse grunfeld, clear
keep if inrange(company, 1, 3)
twoway line mvalue year, by(company, cols(1) compact)
我喜欢所有三个面板的紧凑性和一个常见的x轴。我可以使用不同的y变量吗?
我可以将以下三个面板与graph combine
合并。但这会重复x轴并浪费大量空间,可以更好地花在y范围上。
webuse grunfeld, clear
keep if (company == 1)
tsline mvalue, name(mvalue, replace)
tsline kstock, name(kstock, replace)
tsline invest, name(invest, replace)
graph combine mvalue kstock invest, cols(1) name(combined, replace)
我开始剥离x轴标题和标签,但这会影响每个面板的相对大小。这里有更简单的解决方案吗?
webuse grunfeld, clear
keep if (company == 1)
tsline mvalue, name(mvalue, replace) xtitle("") xlabel(none)
tsline kstock, name(kstock, replace) xtitle("") xlabel(none)
tsline invest, name(invest, replace)
graph combine mvalue kstock invest, cols(1) name(combined, replace)
答案 0 :(得分:3)
试试这个:
webuse grunfeld, clear
keep if (company == 1)
tsline mvalue, name(mvalue, replace) xscale(off)
tsline kstock, name(kstock, replace) xscale(off)
tsline invest, name(invest, replace)
graph combine mvalue kstock invest, cols(1) name(combined, replace) xcommon imargin(b=1 t=1)
xscale(off)
选项会抑制x轴,而imargin()
会缩小每个图表顶部和底部的空间,使其缩小,xcommon
使比例缩小相同。
这会产生:
答案 1 :(得分:1)
我写了一个程序sparkline
主要是出于多个时间序列的显示。
webuse grunfeld, clear
set scheme s1color
ssc inst sparkline
sparkline invest mvalue kstock year if company == 1
答案 2 :(得分:0)
第三种方法是reshape long
数据,然后在by()
中使用变量标签。
webuse grunfeld, clear
keep if (company == 1)
keep year mvalue kstock invest
foreach v of varlist mvalue kstock invest {
rename `v' value`v'
}
reshape long value, i(year) j(var) string
label define var 1 "mvalue" 2 "kstock" 3 "invest"
rename var var0
encode var0, generate(var) label(var)
xtset var year
tsline value, by(var, cols(1))