-
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 zeroThe 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