图形组合每列和每行的标签

graph combine labels for each column and each row

我正在使用 graph combine 来组合多个地块。如何标记每一列和每一行?在我的例子中,每一列绘制一个不同的变量,每一行使用不同的样本。我不希望为每个图表单独添加标签,因为这会使它更加混乱。

可以找到我想要的示例 here

我查看了文档,但没有找到解决方案。我确实在 Statalist 上找到了这个 post,但是那里的解决方案只为整个轴生成一个通用标题,而不是 columns/rows.

分开的标题

是否可以按照 text(x y "text...") 的精神手动添加文本到 graph combine

这是一个例子:

sysuse uslifeexp, clear

graph drop _all
line le_male year if year<=1950, ytitle("") name(male1900)

line le_female year if year<=1950, ytitle("") name(female1900)

line le_male year if year>1950, ytitle("") name(male1951)

line le_female year if year>1950, ytitle("") name(female1951)

graph combine male1900 female1900 male1951 female1951, rows(2) cols(2)

我想按如下方式标记它(在行标签上多 space 这样它就不会溢出到图中;重要的是,标签不应该是单个小图的一部分,但放在 graph combine 生成的组合图集上):

以下对我有用:

sysuse uslifeexp, clear

line le_male year if year<=1950, xlabel("") xtitle("") ytitle("1900-1950", ///
                                 orientation(horizontal)) title(MALE) name(male1900)

line le_female year if year<=1950, xlabel("") xtitle("") ytitle("") ///
                                   title(FEMALE) name(female1900)

line le_male year if year>1950, xlabel("") xtitle("") ytitle("1951-1999", ///
                                orientation(horizontal)) name(male1951)

line le_female year if year>1950, xlabel("") xtitle("") ytitle("") name(female1951)

graph combine male1900 female1900 male1951 female1951, rows(2) cols(2)

另一种解决方案是重组数据,以便从包含 by() 选项的调用中生成图表。面板的顺序自然是可以选择的。获得图表后,您可以编辑例如图字幕。

sysuse uslifeexp, clear

keep le_male le_female year 

gen period = year > 1950
label define period 0 "1901-1950" 1 "1951-1999" 
label val period period 

reshape long le_ , i(year) j(gender) string 

egen panel = group(gender period), label 

label var le "Life expectancy (years)"

set scheme s1color 

line le_ year, by(panel, note("") xrescale imargin(medsmall)) ///
yla(, ang(h)) xlabel(#5) xtitle("") 

另请参阅来自 SSC 的 twby