@@ -146,20 +146,13 @@ expand_limits_scale <- function(scale, expand = expansion(0, 0), limits = waiver
146146 limits <- limits %| W | % scale $ get_limits()
147147
148148 if (scale $ is_discrete()) {
149- continuous_limits <- scale $ continuous_limits
150- if (is.function(continuous_limits )) {
151- continuous_limits <- continuous_limits(limits )
152- }
153- if (! is.null(continuous_limits )) {
154- continuous_limits <- range(continuous_limits )
155- check_numeric(continuous_limits , call = scale $ call , arg = " continuous.limits" )
156- }
157149 coord_limits <- coord_limits %|| % c(NA_real_ , NA_real_ )
158150 expand_limits_discrete(
159- continuous_limits % || % scale $ map(limits ),
151+ scale $ map(limits ),
160152 expand ,
161153 coord_limits ,
162- range_continuous = continuous_limits %|| % scale $ range_c $ range
154+ range_continuous = scale $ range_c $ range ,
155+ continuous_limits = scale $ continuous_limits
163156 )
164157 } else {
165158 # using the inverse transform to resolve the NA value is needed for date/datetime/time
@@ -176,7 +169,21 @@ expand_limits_continuous <- function(limits, expand = expansion(0, 0), coord_lim
176169}
177170
178171expand_limits_discrete <- function (limits , expand = expansion(0 , 0 ), coord_limits = c(NA , NA ),
179- range_continuous = NULL ) {
172+ range_continuous = NULL , continuous_limits = NULL ) {
173+ if (is.function(continuous_limits )) {
174+ continuous_limits <- continuous_limits(limits )
175+ }
176+ if (! is.null(continuous_limits )) {
177+ if (! anyNA(continuous_limits )) {
178+ continuous_limits <- range(continuous_limits )
179+ }
180+ check_numeric(continuous_limits , arg = " continuous.limits" )
181+ check_length(continuous_limits , 2L , arg = " continuous.limits" )
182+ missing <- is.na(continuous_limits )
183+ limits <- range(ifelse(missing , limits , continuous_limits ))
184+ coord_limits <- range(ifelse(missing , coord_limits , continuous_limits ))
185+ }
186+
180187 limit_info <- expand_limits_discrete_trans(
181188 limits ,
182189 expand ,
0 commit comments