You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Stata的distplot中添加45度线?

如何在Stata的distplot中添加45度线?

我太懂你这种不想手动计算累积分布的心情了——distplot本来就是帮我们省事儿的工具,结果加个参考线还要绕大弯?其实完全不用折腾,用addplot()选项就能直接搞定,根本不用自己手动算ECDF!

给你一步步适配你的数据和需求来操作:

具体操作步骤

  1. 先加载数据并获取变量的极值(确保参考线能刚好覆盖整个图的范围):

    sysuse auto, clear
    summarize price, meanonly  // 只提取min和max,不做多余计算
    local min_price = r(min)
    local max_price = r(max)
    
  2. 直接在distplot里叠加45度参考线:

    distplot price, over(foreign) cumulative ///
        addplot(twoway line (0 1) (`min_price' `max_price'), ///
                lcolor(black) lpattern(dash) lwidth(medium)) ///
        title("分国别价格累积分布")
    

为啥这个方法能行?

  • cumulative选项是让distplot生成你需要的累积分布(ECDF)图,这是画出目标图的基础;
  • 虽然distplot不是twoway类命令,但它支持addplot()参数——这个参数允许我们嵌入twoway的绘图元素,所以用twoway line画的45度线能直接叠在distplot上面;
  • 我们画的线从(最低价格, 0)连到(最高价格, 1),刚好对应累积分布0到1的概率范围,就是你要的对角线效果。

要是你嫌存局部宏麻烦,也可以直接把summarize的结果嵌进去,一行就能搞定:

sysuse auto, clear
summarize price, meanonly
distplot price, over(foreign) cumulative addplot(twoway line (0 1) (`r(min)' `r(max)'), lcolor(red) lpattern(dot))

你还能根据自己的喜好调整线的颜色、线型、线宽,比如把lcolor(black)改成lcolor(navy),lpattern(dash)改成lpattern(solid)都完全没问题。

备注:内容来源于stack exchange,提问作者adamsalenushka

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.20 06:54:33