-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Closed
Description
The following should create a blank plot without erroring, but does not after #3426. This should probably be fixed in the same PR as #3448.
library(ggplot2)
ggplot(data.frame(x = numeric(0)), aes(x)) +
geom_point() +
scale_x_continuous(limits = c(0, NA))
#> Warning in rep(yes, length.out = len): 'x' is NULL so the result will be
#> NULL
#> Error in ans[ypos] <- rep(yes, length.out = len)[ypos]: replacement has length zero
The offending code is here (where self$limits
is not NULL
and self$range$range
is NULL
):
Lines 439 to 452 in 10fa001
get_limits = function(self) { | |
if (self$is_empty()) { | |
return(c(0, 1)) | |
} | |
if (is.null(self$limits)) { | |
self$range$range | |
} else if (is.function(self$limits)) { | |
# if limits is a function, it expects to work in data space | |
self$trans$transform(self$limits(self$trans$inverse(self$range$range))) | |
} else { | |
ifelse(is.na(self$limits), self$range$range, self$limits) | |
} | |
}, |
I think that Scale$get_limits()
needs another case for limits containing NA
(or Scale$is_emtpy()
should return TRUE
for these limits). @thomasp85 any opinion on either of these solutions?
Metadata
Metadata
Assignees
Labels
No labels