如何在R ggplot阶梯函数图中添加指定区间的水平线条
实现方案
你只需在原有绘图代码的基础上,新增两段对应区间的水平线段图层,同时补充和原阶梯图风格统一的端点标记即可,修改后的完整可运行代码如下:
df <- data.frame(x=Asignaturas, y=solF) df$xend <- c(df$x[2:nrow(df)],NA) df$yend <- df$y p <- (ggplot(df, aes(x=x, y=y, xend=xend, yend=yend)) + geom_vline(aes(xintercept=x), linetype=2,color="grey") + # 绘制x<3区间y=0的水平线,-Inf自动适配x轴最小值 geom_segment(x = -Inf, xend = 3, y = 0, yend = 0) + # 绘制x>=8区间y=1的水平线,Inf自动适配x轴最大值 geom_segment(x = 8, xend = Inf, y = 1, yend = 1) + # 原有阶梯图端点 geom_point() + geom_point(aes(x=xend, y=y), shape=1) + # 新增线段的端点标记,和原有风格统一:x=3处为空心点(x<3才取值0) geom_point(x = 3, y = 0, shape = 1) + # x=8处为实心点(x>=8即取值1) geom_point(x = 8, y = 1) + geom_segment() + geom_text(aes(label = paste0(solF,''),vjust = -0.5), color = "black") + ylab("分布函数") + xlab("科目") + # 可选配置:固定y轴范围避免显示溢出 ylim(c(-0.1, 1.1)) ) p
如果你的x轴有自定义的取值范围,也可以把代码中的-Inf和Inf替换为你实际的x轴最小、最大值,最终效果和参考图一致。
附图
原阶梯函数图:
添加水平线后效果参考图:
内容的提问来源于stack exchange,提问作者Amelia
相关产品推荐
相关产品推荐

