ggplot2 v3.3.4版本log-log图中geom_abline默认设置失效问题
问题根因
你遇到的是ggplot2 v3.3.4版本的已知异常:geom_abline未显式传参时,默认的intercept=0、slope=1参数在对数坐标变换后解析逻辑出错,斜率被误判为0,所以仅显示水平线。同时直线延伸到x=0位置时,log10(0)为负无穷,就触发了对应的警告。
解决方法
两种方案都可以正常生成log-log坐标下斜率为1的参考线:
- 方案1:显式指定
geom_abline的参数即可修复异常,建议同时手动设置坐标范围避免无穷值警告
d <- d + ggplot2::geom_abline(intercept = 0, slope = 1, linetype = 2, size = 1) + ggplot2::scale_x_log10(limits = c(1e-4, 1)) + ggplot2::scale_y_log10(limits = c(1e-4, 1.1))
- 方案2:改用
geom_function绘制参考线,稳定性更高,会自动适配当前坐标的有效取值范围,不会产生无穷值
d <- d + ggplot2::geom_function(fun = function(x) x, linetype = 2, size = 1) + ggplot2::scale_x_log10() + ggplot2::scale_y_log10()
内容的提问来源于stack exchange,提问作者Andre Faure
相关产品推荐
相关产品推荐

