diff --git a/NEWS.md b/NEWS.md index 747eebf6bb..5b4d074c57 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,5 +1,8 @@ # ggplot2 (development version) +* `ScaleContinuous$get_breaks()` now only calls `scales::zero_range()` on limits + in transformed space, rather than in data space (#5304). + * Scales throw more informative messages (@teunbrand, #4185, #4258) * The `scale_name` argument in `continuous_scale()`, `discrete_scale()` and diff --git a/R/scale-.R b/R/scale-.R index 9a9ef4f4c9..eb4248048d 100644 --- a/R/scale-.R +++ b/R/scale-.R @@ -691,7 +691,9 @@ ScaleContinuous <- ggproto("ScaleContinuous", Scale, ) } - if (zero_range(as.numeric(limits))) { + # Compute `zero_range()` in transformed space in case `limits` in data space + # don't support conversion to numeric (#5304) + if (zero_range(as.numeric(self$trans$transform(limits)))) { breaks <- limits[1] } else if (is.waive(self$breaks)) { if (!is.null(self$n.breaks) && trans_support_nbreaks(self$trans)) {