Skip to content

Commit 2303fd4

Browse files
authored
Catch errors when applying after_scale mods to legend keys (#3801)
1 parent fbebbaa commit 2303fd4

File tree

2 files changed

+17
-2
lines changed

2 files changed

+17
-2
lines changed

R/guide-bins.R

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,16 @@ guide_geom.bins <- function(guide, layers, default_mapping) {
200200
n <- vapply(layer$aes_params, length, integer(1))
201201
params <- layer$aes_params[n == 1]
202202

203-
data <- layer$geom$use_defaults(guide$key[matched], params)
203+
aesthetics <- layer$mapping
204+
modifiers <- aesthetics[is_scaled_aes(aesthetics) | is_staged_aes(aesthetics)]
205+
206+
data <- tryCatch(
207+
layer$geom$use_defaults(guide$key[matched], params, modifiers),
208+
error = function(...) {
209+
warn("Failed to apply `after_scale()` modifications to legend")
210+
layer$geom$use_defaults(guide$key[matched], params, list())
211+
}
212+
)
204213
} else {
205214
data <- layer$geom$use_defaults(NULL, layer$aes_params)[rep(1, nrow(guide$key)), ]
206215
}

R/guide-legend.r

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -262,7 +262,13 @@ guide_geom.legend <- function(guide, layers, default_mapping) {
262262
aesthetics <- layer$mapping
263263
modifiers <- aesthetics[is_scaled_aes(aesthetics) | is_staged_aes(aesthetics)]
264264

265-
data <- layer$geom$use_defaults(guide$key[matched], params, modifiers)
265+
data <- tryCatch(
266+
layer$geom$use_defaults(guide$key[matched], params, modifiers),
267+
error = function(...) {
268+
warn("Failed to apply `after_scale()` modifications to legend")
269+
layer$geom$use_defaults(guide$key[matched], params, list())
270+
}
271+
)
266272
} else {
267273
data <- layer$geom$use_defaults(NULL, layer$aes_params)[rep(1, nrow(guide$key)), ]
268274
}

0 commit comments

Comments
 (0)