Skip to content

Commit d9c9147

Browse files
committed
try to match first non-null aesthetic
1 parent d731ace commit d9c9147

File tree

2 files changed

+26
-2
lines changed

2 files changed

+26
-2
lines changed

R/scales-.R

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,8 +178,8 @@ ScalesList <- ggproto("ScalesList", NULL,
178178

179179
# Resolve palette theme setting for this scale
180180
type <- if (scale$is_discrete()) "discrete" else "continuous"
181-
elem <- paste0("palette.", scale$aesthetics[1], ".", type)
182-
elem <- calc_element(elem, theme)
181+
elem <- paste0("palette.", scale$aesthetics, ".", type)
182+
elem <- compact(lapply(elem, calc_element, theme))[1][[1]]
183183

184184
# Resolve the palette itself
185185
elem <- elem %||% fallback_palette(scale)

tests/testthat/test-scales.R

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -734,6 +734,30 @@ test_that("continuous scales warn about faulty `limits`", {
734734
expect_snapshot(scale_x_continuous(limits = 1:3), error = TRUE)
735735
})
736736

737+
test_that("populating palettes works", {
738+
739+
scl <- scales_list()
740+
scl$add(scale_colour_discrete(aesthetics = c("colour", "fill")))
741+
742+
my_theme <- theme(
743+
palette.colour.discrete = c("white", "black"),
744+
palette.fill.discrete = c("red", "blue")
745+
)
746+
747+
scl$set_palettes(my_theme)
748+
expect_equal(scl$scales[[1]]$palette(2), c("white", "black"))
749+
750+
# Scales with >1 aesthetic
751+
scl <- scales_list()
752+
scl$add(scale_colour_discrete(aesthetics = c("colour", "fill")))
753+
754+
my_theme$palette.colour.discrete <- NULL
755+
756+
scl$set_palettes(my_theme)
757+
expect_equal(scl$scales[[1]]$palette(2), c("red", "blue"))
758+
759+
})
760+
737761
test_that("discrete scales work with NAs in arbitrary positions", {
738762
# Prevents intermediate caching of palettes
739763
map <- function(x, limits) {

0 commit comments

Comments
 (0)