@@ -146,20 +146,13 @@ expand_limits_scale <- function(scale, expand = expansion(0, 0), limits = waiver
146
146
limits <- limits %| W | % scale $ get_limits()
147
147
148
148
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
- }
157
149
coord_limits <- coord_limits %|| % c(NA_real_ , NA_real_ )
158
150
expand_limits_discrete(
159
- continuous_limits % || % scale $ map(limits ),
151
+ scale $ map(limits ),
160
152
expand ,
161
153
coord_limits ,
162
- range_continuous = continuous_limits %|| % scale $ range_c $ range
154
+ range_continuous = scale $ range_c $ range ,
155
+ continuous_limits = scale $ continuous_limits
163
156
)
164
157
} else {
165
158
# 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
176
169
}
177
170
178
171
expand_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
+
180
187
limit_info <- expand_limits_discrete_trans(
181
188
limits ,
182
189
expand ,
0 commit comments