图形组合每列和每行的标签
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
。
我正在使用 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
。