-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Scale palettes from theme #5946
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
|
The default colour/fill scales like devtools::load_all("~/packages/ggplot2/")
#> ℹ Loading ggplot2
p <- ggplot(mpg, aes(displ, hwy)) +
geom_point(aes(colour = class)) +
theme(
palette.colour.discrete = pal_brewer("qual")
)
pThe old way of specifying default scales through
options("ggplot2.discrete.colour" = scale_colour_viridis_d)
pCreated on 2024-06-19 with reprex v2.1.0 |
|
Now supports all vanilla non-position aesthetics. devtools::load_all("~/packages/ggplot2")
#> ℹ Loading ggplot2
register_theme_elements(
palette.foobar.discrete = function(n) seq(0.1, 1, length.out = n),
element_tree = list(
palette.foobar.discrete = el_def(c("character", "numeric", "integer", "function"))
)
)
fallback_palette("foobar", discrete = TRUE)
#> function(n) seq(0.1, 1, length.out = n)Created on 2024-06-21 with reprex v2.1.0 I'll bump this from POC to WIP. |
Merge branch 'main' into scale_palettes # Conflicts: # R/utilities.R
|
Should now work with the new |
Merge branch 'main' into scale_palettes # Conflicts: # tests/testthat/test-guides.R
thomasp85
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM - don't know if we should wait with this until the edition split? I think we discussed this and found that it was ok to merge, but please correct me if I'm wrong
|
Yeah I think after we agree on the edition infrastructure we can start marking things with |


This is a proof-of-concept PR for a part of #2239 and fix #4696.
It explores setting scale palettes from the theme. When a scale has a
NULLpalette, the palette will be retrieved from the theme. In the theme, palettes can be provided for different aesthetic/discreteness combinations. Currently, only aesthetics for which this is implemented arecolourandfill.Some demos of this mechanism:
Created on 2024-06-18 with reprex v2.1.0
The idea is that we'd have the default scales, e.g.
scale_colour_discrete(),scale_colour_continuous()etc. haveNULLpalettes so that this mechanism kicks in. I'd still have to figure out how to do this in a backwards compatible manner though.