Stata中三个图与常见x轴的空间有效组合

时间:2016-08-05 16:37:52

标签: stata

我正在寻找类似下面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)

3 个答案:

答案 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使比例缩小相同。

这会产生:

enter image description here

答案 1 :(得分:1)

我写了一个程序sparkline主要是出于多个时间序列的显示。

webuse grunfeld, clear
set scheme s1color 
ssc inst sparkline 
sparkline invest mvalue kstock year if company == 1 

enter image description here

答案 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))

enter image description here