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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 23:06:03