Graph 如何对齐组合图的y轴?
我正在尝试使用命令Graph 如何对齐组合图的y轴?,graph,stata,Graph,Stata,我正在尝试使用命令graph combine在Stata中组合多个图形。单个图形由社区贡献的命令ciplot生成 下面是一个可复制的示例: sysuse auto ciplot foreign, by(rep78) hor /// graphregion(color(white)) /// rcap(lcolor(black) msiz(zero)) /// mc(black) ms(O) /// note("") xtitle( ) /// fysiz
graph combine
在Stata中组合多个图形。单个图形由社区贡献的命令ciplot
生成
下面是一个可复制的示例:
sysuse auto
ciplot foreign, by(rep78) hor ///
graphregion(color(white)) ///
rcap(lcolor(black) msiz(zero)) ///
mc(black) ms(O) ///
note("") xtitle( ) ///
fysize(62.5) saving(g1, replace ) nodraw
ciplot foreign, by(headroom) hor ///
graphregion(color(white)) ///
rcap(lcolor(black) msiz(zero)) ///
mc(black) ms(O) ///
note("") xtitle( ) ///
fysize(100) saving(g2, replace ) nodraw
gr combine g1.gph ///
g2.gph ///
, col(1) xcom graphregion(color(white)) ///
title("Proportion of patients across studied variables")
所有工作如预期,我得到如下图表:
问题在于,由于单个记号标签的宽度不同,图形的y轴开始位置略有不同。当这些标签之间存在较大的差异时,问题会变得更糟
有没有办法强制y轴从图形区域中的同一点开始?改进图形的一种方法是使用titlegap()
选项。但这可能并不令人满意,因为需要手动调整,结果不会完美。此外,如果制作了许多图形,那么将更改合并到代码中可能会很麻烦
例如:
sysuse auto, clear
ciplot foreign, by(rep78) hor ///
graphregion(color(white)) ///
rcap(lcolor(black) msiz(zero)) ///
mc(black) ms(O) ///
note("") xtitle( ) ///
yscale(titlegap(3.5)) ///
fysize(62.5) saving(g1, replace ) nodraw
ciplot foreign, by(headroom) hor ///
graphregion(color(white)) ///
rcap(lcolor(black) msiz(zero)) ///
mc(black) ms(O) ///
note("") xtitle( ) ///
fysize(100) saving(g2, replace ) nodraw
gr combine g1.gph g2.gph, ///
col(1) xcom graphregion(color(white)) ///
title("Proportion of patients across studied variables")
outergap()
选项提供了类似的解决方案。这些选项记录在帮助轴缩放选项中
改进图形的一种方法是使用标题ap()
选项。但这可能并不令人满意,因为需要手动调整,结果不会完美。此外,如果制作了许多图形,那么将更改合并到代码中可能会很麻烦
例如:
sysuse auto, clear
ciplot foreign, by(rep78) hor ///
graphregion(color(white)) ///
rcap(lcolor(black) msiz(zero)) ///
mc(black) ms(O) ///
note("") xtitle( ) ///
yscale(titlegap(3.5)) ///
fysize(62.5) saving(g1, replace ) nodraw
ciplot foreign, by(headroom) hor ///
graphregion(color(white)) ///
rcap(lcolor(black) msiz(zero)) ///
mc(black) ms(O) ///
note("") xtitle( ) ///
fysize(100) saving(g2, replace ) nodraw
gr combine g1.gph g2.gph, ///
col(1) xcom graphregion(color(white)) ///
title("Proportion of patients across studied variables")
outergap()
选项提供了类似的解决方案。这些选项记录在帮助轴缩放选项中改进图形的一种方法是使用标题ap()
选项。但这可能并不令人满意,因为需要手动调整,结果不会完美。此外,如果制作了许多图形,那么将更改合并到代码中可能会很麻烦
例如:
sysuse auto, clear
ciplot foreign, by(rep78) hor ///
graphregion(color(white)) ///
rcap(lcolor(black) msiz(zero)) ///
mc(black) ms(O) ///
note("") xtitle( ) ///
yscale(titlegap(3.5)) ///
fysize(62.5) saving(g1, replace ) nodraw
ciplot foreign, by(headroom) hor ///
graphregion(color(white)) ///
rcap(lcolor(black) msiz(zero)) ///
mc(black) ms(O) ///
note("") xtitle( ) ///
fysize(100) saving(g2, replace ) nodraw
gr combine g1.gph g2.gph, ///
col(1) xcom graphregion(color(white)) ///
title("Proportion of patients across studied variables")
outergap()
选项提供了类似的解决方案。这些选项记录在帮助轴缩放选项中改进图形的一种方法是使用标题ap()
选项。但这可能并不令人满意,因为需要手动调整,结果不会完美。此外,如果制作了许多图形,那么将更改合并到代码中可能会很麻烦
例如:
sysuse auto, clear
ciplot foreign, by(rep78) hor ///
graphregion(color(white)) ///
rcap(lcolor(black) msiz(zero)) ///
mc(black) ms(O) ///
note("") xtitle( ) ///
yscale(titlegap(3.5)) ///
fysize(62.5) saving(g1, replace ) nodraw
ciplot foreign, by(headroom) hor ///
graphregion(color(white)) ///
rcap(lcolor(black) msiz(zero)) ///
mc(black) ms(O) ///
note("") xtitle( ) ///
fysize(100) saving(g2, replace ) nodraw
gr combine g1.gph g2.gph, ///
col(1) xcom graphregion(color(white)) ///
title("Proportion of patients across studied variables")
outergap()
选项提供了类似的解决方案。这些选项记录在帮助轴缩放选项中。在这种情况下,刻度的标签宽度明显取决于小数位数
这里有两个主要问题:
不允许在ciplot
y轴标签中指定可变级别的格式
在组合两个图形之前再次绘制两个图形图形组合
graph combine g1 g2, cols(1) ///
xcommon ///
graphregion(color(white)) ///
title("Proportion of patients across studied variables") ///
nodraw ///
name(g3, replace)
local decimals 1
local i 0
foreach var in rep78 headroom {
local ++i
local j 0
quietly levelsof `var', local(`var'm)
foreach l of local `var'm {
local ++j
local il : display %2.`decimals'f `l'
.g3.plotregion1.graph`i'.yaxis1.major.ticks[`j'][2] = "`il'"
}
}
graph display g3
请注意,您不能使用
ciplot
中的ylabel()
选项指定记号标签,因为您事先不知道实际的记号值。在这种情况下,记号的标签宽度显然取决于小数位数
这里有两个主要问题:
不允许在ciplot
y轴标签中指定可变级别的格式
在组合两个图形之前再次绘制两个图形图形组合
graph combine g1 g2, cols(1) ///
xcommon ///
graphregion(color(white)) ///
title("Proportion of patients across studied variables") ///
nodraw ///
name(g3, replace)
local decimals 1
local i 0
foreach var in rep78 headroom {
local ++i
local j 0
quietly levelsof `var', local(`var'm)
foreach l of local `var'm {
local ++j
local il : display %2.`decimals'f `l'
.g3.plotregion1.graph`i'.yaxis1.major.ticks[`j'][2] = "`il'"
}
}
graph display g3
请注意,您不能使用
ciplot
中的ylabel()
选项指定记号标签,因为您事先不知道实际的记号值。在这种情况下,记号的标签宽度显然取决于小数位数
这里有两个主要问题:
不允许在ciplot
y轴标签中指定可变级别的格式
在组合两个图形之前再次绘制两个图形图形组合
graph combine g1 g2, cols(1) ///
xcommon ///
graphregion(color(white)) ///
title("Proportion of patients across studied variables") ///
nodraw ///
name(g3, replace)
local decimals 1
local i 0
foreach var in rep78 headroom {
local ++i
local j 0
quietly levelsof `var', local(`var'm)
foreach l of local `var'm {
local ++j
local il : display %2.`decimals'f `l'
.g3.plotregion1.graph`i'.yaxis1.major.ticks[`j'][2] = "`il'"
}
}
graph display g3
请注意,您不能使用
ciplot
中的ylabel()
选项指定记号标签,因为您事先不知道实际的记号值。在这种情况下,记号的标签宽度显然取决于小数位数
这里有两个主要问题:
不允许在ciplot
y轴标签中指定可变级别的格式
在组合两个图形之前再次绘制两个图形图形组合
graph combine g1 g2, cols(1) ///
xcommon ///
graphregion(color(white)) ///
title("Proportion of patients across studied variables") ///
nodraw ///
name(g3, replace)
local decimals 1
local i 0
foreach var in rep78 headroom {
local ++i
local j 0
quietly levelsof `var', local(`var'm)
foreach l of local `var'm {
local ++j
local il : display %2.`decimals'f `l'
.g3.plotregion1.graph`i'.yaxis1.major.ticks[`j'][2] = "`il'"
}
}
graph display g3
请注意,您不能使用
ciplot
中的ylabel()
选项指定刻度标签,因为您事先不知道实际刻度值。谢谢Roberto。这可能是一个快速解决方案,但正如您所指出的,不会令人满意地解决问题。现在进行实验:1)使用statsby
2)使用metan
@radek Roberto的解决方案进行绘图,如果您不想使用与我的答案相同的小数,那么使用metan
@radek Roberto的解决方案非常令人满意。Roberto的解决方案也可以很容易地推广,因此您不必指定所需的空格数(同样基于最大小数数)。谢谢Roberto。这可能是一个快速解决方案,但正如您所指出的,不会令人满意地解决问题。现在进行实验:1)使用statsby
2)使用metan
@radek Roberto的解决方案进行绘图,如果您不想使用与我的答案相同的小数,那么使用metan
@radek Roberto的解决方案非常令人满意。Roberto的解决方案也可以很容易地推广,这样您就不必指定自己是麻木的