R语言ggplot2绘制RDD图时x轴刻度与回归线延伸问题
RDD绘图问题修复方案
首先先修正你代码里的一处逻辑偏差:你原本的哑变量D判断条件为z >= -0.1,不符合你要求的「z≥0为1、z<0为0」的分组规则,需要先调整该判断条件。
两个问题的修复逻辑如下:
- 整数刻度问题:你的
z是数值型变量,不能用scale_x_discrete配置,改用scale_x_continuous,通过breaks参数手动指定所有整数刻度,同时将原xlim的范围配置整合到scale_x_continuous的limits参数中,避免参数冲突,另外隐藏次要网格线即可消除非整数刻度的辅助线。 - 回归线延伸问题:给
geom_smooth添加fullrange = TRUE参数,允许拟合结果延伸到整个x轴取值范围,左侧分组的回归线和置信区间就会自动延伸到z=0的断点位置。
完整可运行代码
library(dplyr) library(ggplot2) # 基础数据构造 SalaryAfter <- c(287.780,305.181,323.468,339.082,344.738,370.475,373.257, 372.682,388.939,386.994) z <- -5:4 df <- data.frame(z,SalaryAfter) # 绘图代码 df %>% mutate(D = as.factor(ifelse(z >= 0, 1, 0))) %>% ggplot(aes(x = z, y = SalaryAfter, color = D)) + geom_point(size = 2) + geom_smooth(method = "lm", fullrange = TRUE) + geom_vline(xintercept = 0, linetype = "dashed") + scale_x_continuous( breaks = seq(-5, 4, 1), limits = c(-6, 5), name = "Distance to acceptance score" ) + labs( title = "Figur 1.1", subtitle = "Salary for every distance to the acceptance score" ) + theme( panel.grid.major = element_line(color = "white", size = 0.75, linetype = 1), panel.grid.minor = element_blank() )
内容的提问来源于stack exchange,提问作者Casper97
相关产品推荐
相关产品推荐

