ggplot中geom_hline未显示在设定的y截距处,求原因
问题原因及解决办法
你的水平线没显示,大概率是y轴的可视范围不包含0——也就是你的delta列所有数值都远大于或远小于0,导致geom_hline(yintercept=0)画在了图的显示区域外面。
验证方法
先运行这段代码,查看delta的取值范围:
summary(J68_fit$delta)
如果输出的最小值和最大值都不包含0,那就是这个问题。
解决办法
给ggplot添加扩展y轴范围的设置,把0纳入可视区间:
- 方法一:用
expand_limits自动扩展,不会硬截断数据:
ggplot(data = J68_fit, aes(x = v, y = delta, colour = J)) + geom_point(size = 2) + theme_classic() + geom_hline(yintercept = 0) + expand_limits(y = 0) # 新增该行扩展y轴范围
- 方法二:手动指定y轴范围(适合需要精准控制的场景):
ggplot(data = J68_fit, aes(x = v, y = delta, colour = J)) + geom_point(size = 2) + theme_classic() + geom_hline(yintercept = 0) + ylim(c(min(J68_fit$delta) - 0.5, max(J68_fit$delta) + 0.5)) # 可自行调整上下限数值
另外,也可以排查geom_hline的颜色是否和背景冲突,但默认黑色配合theme_classic的白色背景,这个可能性极低,优先确认y轴范围问题。
内容的提问来源于stack exchange,提问作者user
相关产品推荐
相关产品推荐

