Skip to content

Commit fe13b78

Browse files
committed
confine and improve
1 parent cb63477 commit fe13b78

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

R/scale-expansion.R

Lines changed: 18 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -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

178171
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+
180187
limit_info <- expand_limits_discrete_trans(
181188
limits,
182189
expand,

0 commit comments

Comments
 (0)