[英]Stata: Two way plot, add text to second line using coordinates of the second axis
我有一个直方图的 plot,我想在其中添加中位数。 我不能使用 xline() 因为这条线落在直方图的后面,而不是在它上面。 为了解决这个问题,我使用 scatteri 和坐标。
因为我事先不知道直方图的高度,所以我将 scatteri plot 设置为使用单独的 y 轴,我已将其隐藏。 但是,我似乎无法使用第二个 y 轴坐标向该行添加文本(它而是使用第一个 y 轴坐标,即使它标记的 object 位于第二个 y 轴上)。 这是我的问题的一个例子:
sysuse auto
sum mpg, d
local median = r(p50)
twoway hist mpg, start(10) width(5) || ///
scatteri 0 `median' 1 `median', recast(line) yaxis(2) ///
ylabel(none, axis(2)) ytitle("", axis(2)) lc(red) ///
text(0.08 `median' `"median = $`=string(`median',"%6.2f")'"', ///
color(red) placement(se)) ///
legend(off)
这会产生所需的图表(大部分*):
问题是我事先不知道直方图的高度。 这就是我首先使用第二个 y 轴的原因。 我不想使用“0.08”将我的文本放入正确的位置,而是使用“1”,因为这是第二个 y 轴的最大值。 相应的行将改为:
text(1 `median' `"median = $`=string(`median',"%6.2f")'"', ///
color(red) placement(se)) ///
当然,我可以手动确定直方图的这个值(就像我在本例中所做的那样),但我计划通过循环创建一组这些图,这样就有十几个面板。 使用第二个 y 轴网格点将文本附加到线条上似乎更好。
我尝试将axis(2)
作为附加参数添加到文本框中,但显然不允许使用此选项。
*第二个小问题是,当我添加 scatteri plot 时,我不明白为什么 x 轴会出现省略号 (...)。 我想删除这个。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.