Skip to content
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

Scales expose aesthetics argument #6227

Merged
merged 5 commits into from
Jan 28, 2025
Merged
Show file tree
Hide file tree
Changes from 4 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 3 additions & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
# ggplot2 (development version)

* All scales now expose the `aesthetics` parameter (@teunbrand, #5841)
* Attempt to boost detail in `coord_polar()` and `coord_radial()` near the
center (@teunbrand, #5023)
* `guide_*()` can now accept two inside legend theme elements:
`legend.position.inside` and `legend.justification.inside`, allowing inside
legends to be placed at different positions. Only inside legends with the same
Expand Down
20 changes: 10 additions & 10 deletions R/scale-alpha.R
Original file line number Diff line number Diff line change
Expand Up @@ -31,9 +31,9 @@
#'
#' # Changing the title
#' p + scale_alpha("cylinders")
scale_alpha <- function(name = waiver(), ..., range = NULL) {
scale_alpha <- function(name = waiver(), ..., range = NULL, aesthetics = "alpha") {
palette <- if (!is.null(range)) pal_rescale(range) else NULL
continuous_scale("alpha", name = name, palette = palette, ...)
continuous_scale(aesthetics, name = name, palette = palette, ...)
}

#' @rdname scale_alpha
Expand All @@ -42,9 +42,9 @@ scale_alpha_continuous <- scale_alpha

#' @rdname scale_alpha
#' @export
scale_alpha_binned <- function(name = waiver(), ..., range = NULL) {
scale_alpha_binned <- function(name = waiver(), ..., range = NULL, aesthetics = "alpha") {
palette <- if (!is.null(range)) pal_rescale(range) else NULL
binned_scale("alpha", name = name, palette = palette, ...)
binned_scale(aesthetics, name = name, palette = palette, ...)
}

#' @rdname scale_alpha
Expand All @@ -58,33 +58,33 @@ scale_alpha_discrete <- function(...) {

#' @rdname scale_alpha
#' @export
scale_alpha_ordinal <- function(name = waiver(), ..., range = NULL) {
scale_alpha_ordinal <- function(name = waiver(), ..., range = NULL, aesthetics = "alpha") {
palette <- if (!is.null(range)) {
function(n) seq(range[1], range[2], length.out = n)
} else {
NULL
}
discrete_scale("alpha", name = name, palette = palette, ...)
discrete_scale(aesthetics, name = name, palette = palette, ...)
}

#' @rdname scale_alpha
#' @export
#' @usage NULL
scale_alpha_datetime <- function(name = waiver(), ..., range = NULL) {
scale_alpha_datetime <- function(name = waiver(), ..., range = NULL, aesthetics = "alpha") {
palette <- if (!is.null(range)) pal_rescale(range) else NULL
datetime_scale(
aesthetics = "alpha", transform = "time", name = name,
aesthetics = aesthetics, transform = "time", name = name,
palette = palette, ...
)
}

#' @rdname scale_alpha
#' @export
#' @usage NULL
scale_alpha_date <- function(name = waiver(), ..., range = NULL){
scale_alpha_date <- function(name = waiver(), ..., range = NULL, aesthetics = "alpha"){
palette <- if (!is.null(range)) pal_rescale(range) else NULL
datetime_scale(
aesthetics = "alpha", transform = "date", name = name,
aesthetics = aesthetics, transform = "date", name = name,
palette = palette, ...
)
}
25 changes: 15 additions & 10 deletions R/scale-identity.R
Original file line number Diff line number Diff line change
Expand Up @@ -89,9 +89,10 @@ scale_fill_identity <- function(name = waiver(), ..., guide = "none",
#' @seealso
#' Other shape scales: [scale_shape()], [scale_shape_manual()].
#' @export
scale_shape_identity <- function(name = waiver(), ..., guide = "none") {
scale_shape_identity <- function(name = waiver(), ..., guide = "none",
aesthetics = "shape") {
continuous_scale(
"shape", name = name,
aesthetics, name = name,
palette = pal_identity(), ..., guide = guide,
super = ScaleContinuousIdentity
)
Expand All @@ -101,9 +102,10 @@ scale_shape_identity <- function(name = waiver(), ..., guide = "none") {
#' @seealso
#' Other linetype scales: [scale_linetype()], [scale_linetype_manual()].
#' @export
scale_linetype_identity <- function(name = waiver(), ..., guide = "none") {
scale_linetype_identity <- function(name = waiver(), ..., guide = "none",
aesthetics = "linetype") {
discrete_scale(
"linetype", name = name,
aesthetics, name = name,
palette = pal_identity(), ..., guide = guide,
super = ScaleDiscreteIdentity
)
Expand All @@ -113,19 +115,21 @@ scale_linetype_identity <- function(name = waiver(), ..., guide = "none") {
#' @seealso
#' Other alpha scales: [scale_alpha()], [scale_alpha_manual()].
#' @export
scale_linewidth_identity <- function(name = waiver(), ..., guide = "none") {
scale_linewidth_identity <- function(name = waiver(), ..., guide = "none",
aesthetics = "linewidth") {
continuous_scale(
"linewidth", name = name,
aesthetics, name = name,
palette = pal_identity(), ...,
guide = guide, super = ScaleContinuousIdentity
)
}

#' @rdname scale_identity
#' @export
scale_alpha_identity <- function(name = waiver(), ..., guide = "none") {
scale_alpha_identity <- function(name = waiver(), ..., guide = "none",
aesthetics = "alpha") {
continuous_scale(
"alpha", name = name,
aesthetics, name = name,
palette = pal_identity(), ..., guide = guide,
super = ScaleContinuousIdentity
)
Expand All @@ -135,9 +139,10 @@ scale_alpha_identity <- function(name = waiver(), ..., guide = "none") {
#' @seealso
#' Other size scales: [scale_size()], [scale_size_manual()].
#' @export
scale_size_identity <- function(name = waiver(), ..., guide = "none") {
scale_size_identity <- function(name = waiver(), ..., guide = "none",
aesthetics = "size") {
continuous_scale(
"size", name = name,
aesthetics, name = name,
palette = pal_identity(), ..., guide = guide,
super = ScaleContinuousIdentity
)
Expand Down
10 changes: 5 additions & 5 deletions R/scale-linetype.R
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
#' line types unless `scale_linetype_binned()` is used. Still, as linetypes has
#' no inherent order, this use is not advised.
#'
#' @inheritParams scale_x_discrete
#' @inheritParams discrete_scale
#' @inheritDotParams discrete_scale -expand -position -na.value -scale_name -palette
#' @param na.value The linetype to use for `NA` values.
#' @rdname scale_linetype
Expand Down Expand Up @@ -35,9 +35,9 @@
#' scale_linetype_identity() +
#' facet_grid(linetype ~ .) +
#' theme_void(20)
scale_linetype <- function(name = waiver(), ..., na.value = NA) {
scale_linetype <- function(name = waiver(), ..., na.value = NA, aesthetics = "linetype") {
discrete_scale(
"linetype", name = name,
aesthetics, name = name,
palette = NULL,
na.value = na.value,
...
Expand All @@ -46,9 +46,9 @@ scale_linetype <- function(name = waiver(), ..., na.value = NA) {

#' @rdname scale_linetype
#' @export
scale_linetype_binned <- function(name = waiver(), ..., na.value = NA) {
scale_linetype_binned <- function(name = waiver(), ..., na.value = NA, aesthetics = "linetype") {
binned_scale(
"linetype", name = name,
aesthetics, name = name,
palette = NULL,
na.value = na.value,
...
Expand Down
21 changes: 11 additions & 10 deletions R/scale-linewidth.R
Original file line number Diff line number Diff line change
Expand Up @@ -33,9 +33,10 @@ scale_linewidth_continuous <- function(name = waiver(), breaks = waiver(),
labels = waiver(), limits = NULL,
range = NULL, transform = "identity",
trans = deprecated(),
guide = "legend") {
guide = "legend",
aesthetics = "linewidth") {
palette <- if (!is.null(range)) pal_rescale(range) else NULL
continuous_scale("linewidth", palette = palette, name = name,
continuous_scale(aesthetics, palette = palette, name = name,
breaks = breaks, labels = labels, limits = limits,
transform = transform, trans = trans, guide = guide)
}
Expand All @@ -49,9 +50,9 @@ scale_linewidth <- scale_linewidth_continuous
scale_linewidth_binned <- function(name = waiver(), breaks = waiver(), labels = waiver(),
limits = NULL, range = NULL, n.breaks = NULL,
nice.breaks = TRUE, transform = "identity",
trans = deprecated(), guide = "bins") {
trans = deprecated(), guide = "bins", aesthetics = "linewidth") {
palette <- if (!is.null(range)) pal_rescale(range) else NULL
binned_scale("linewidth", palette = palette, name = name,
binned_scale(aesthetics, palette = palette, name = name,
breaks = breaks, labels = labels, limits = limits,
transform = transform, trans = trans, n.breaks = n.breaks,
nice.breaks = nice.breaks, guide = guide)
Expand All @@ -70,33 +71,33 @@ scale_linewidth_discrete <- function(...) {
#' @rdname scale_linewidth
#' @export
#' @usage NULL
scale_linewidth_ordinal <- function(name = waiver(), ..., range = NULL) {
scale_linewidth_ordinal <- function(name = waiver(), ..., range = NULL, aesthetics = "linewidth") {
palette <- if (!is.null(range)) {
function(n) seq(range[1], range[2], length.out = n)
} else {
NULL
}
discrete_scale("linewidth", name = name, palette = palette, ...)
discrete_scale(aesthetics, name = name, palette = palette, ...)
}

#' @rdname scale_linewidth
#' @export
#' @usage NULL
scale_linewidth_datetime <- function(name = waiver(), ..., range = NULL) {
scale_linewidth_datetime <- function(name = waiver(), ..., range = NULL, aesthetics = "linewidth") {
palette <- if (!is.null(range)) pal_rescale(range) else NULL
datetime_scale(
"linewidth", transform = "time", name = name,
aesthetics, transform = "time", name = name,
palette = palette, ...
)
}

#' @rdname scale_linewidth
#' @export
#' @usage NULL
scale_linewidth_date <- function(name = waiver(), ..., range = NULL) {
scale_linewidth_date <- function(name = waiver(), ..., range = NULL, aesthetics = "linewidth") {
palette <- if (!is.null(range)) pal_rescale(range) else NULL
datetime_scale(
"linewidth", transform = "date", name = name,
aesthetics, transform = "date", name = name,
palette = palette, ...
)
}
22 changes: 11 additions & 11 deletions R/scale-manual.R
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
#' `scale_discrete_manual()` is a generic scale that can work with any aesthetic or set
#' of aesthetics provided via the `aesthetics` argument.
#'
#' @inheritParams scale_x_discrete
#' @inheritParams discrete_scale
#' @inheritDotParams discrete_scale -expand -position -aesthetics -palette -scale_name
#' @param aesthetics Character string or vector of character strings listing the
#' name(s) of the aesthetic(s) that this scale works with. This can be useful, for
Expand Down Expand Up @@ -103,38 +103,38 @@ scale_fill_manual <- function(..., values, aesthetics = "fill", breaks = waiver(
#' @seealso
#' Other size scales: [scale_size()], [scale_size_identity()].
#' @export
scale_size_manual <- function(..., values, breaks = waiver(), na.value = NA) {
manual_scale("size", values, breaks, ..., na.value = na.value)
scale_size_manual <- function(..., values, breaks = waiver(), na.value = NA, aesthetics = "size") {
manual_scale(aesthetics, values, breaks, ..., na.value = na.value)
}

#' @rdname scale_manual
#' @seealso
#' Other shape scales: [scale_shape()], [scale_shape_identity()].
#' @export
scale_shape_manual <- function(..., values, breaks = waiver(), na.value = NA) {
manual_scale("shape", values, breaks, ..., na.value = na.value)
scale_shape_manual <- function(..., values, breaks = waiver(), na.value = NA, aesthetics = "shape") {
manual_scale(aesthetics, values, breaks, ..., na.value = na.value)
}

#' @rdname scale_manual
#' @seealso
#' Other linetype scales: [scale_linetype()], [scale_linetype_identity()].
#' @export
scale_linetype_manual <- function(..., values, breaks = waiver(), na.value = NA) {
manual_scale("linetype", values, breaks, ..., na.value = na.value)
scale_linetype_manual <- function(..., values, breaks = waiver(), na.value = NA, aesthetics = "linetype") {
manual_scale(aesthetics, values, breaks, ..., na.value = na.value)
}

#' @rdname scale_manual
#' @seealso
#' Other alpha scales: [scale_alpha()], [scale_alpha_identity()].
#' @export
scale_linewidth_manual <- function(..., values, breaks = waiver(), na.value = NA) {
manual_scale("linewidth", values, breaks, ..., na.value = na.value)
scale_linewidth_manual <- function(..., values, breaks = waiver(), na.value = NA, aesthetics = "linewidth") {
manual_scale(aesthetics, values, breaks, ..., na.value = na.value)
}

#' @rdname scale_manual
#' @export
scale_alpha_manual <- function(..., values, breaks = waiver(), na.value = NA) {
manual_scale("alpha", values, breaks, ..., na.value = na.value)
scale_alpha_manual <- function(..., values, breaks = waiver(), na.value = NA, aesthetics = "alpha") {
manual_scale(aesthetics, values, breaks, ..., na.value = na.value)
}

#' @rdname scale_manual
Expand Down
10 changes: 5 additions & 5 deletions R/scale-shape.R
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@
#'
#' @param solid Should the shapes be solid, `TRUE`, or hollow,
#' `FALSE`?
#' @inheritParams scale_x_discrete
#' @inheritParams discrete_scale
#' @inheritDotParams discrete_scale -expand -position -scale_name -palette
#' @rdname scale_shape
#' @seealso
Expand Down Expand Up @@ -42,16 +42,16 @@
#' scale_shape_identity() +
#' facet_wrap(~shape) +
#' theme_void()
scale_shape <- function(name = waiver(), ..., solid = NULL) {
scale_shape <- function(name = waiver(), ..., solid = NULL, aesthetics = "shape") {
palette <- if (!is.null(solid)) pal_shape(solid) else NULL
discrete_scale("shape", name = name, palette = palette, ...)
discrete_scale(aesthetics, name = name, palette = palette, ...)
}

#' @rdname scale_shape
#' @export
scale_shape_binned <- function(name = waiver(), ..., solid = TRUE) {
scale_shape_binned <- function(name = waiver(), ..., solid = TRUE, aesthetics = "shape") {
palette <- if (!is.null(solid)) pal_binned(pal_shape(solid)) else NULL
binned_scale("shape", name = name, palette = palette, ...)
binned_scale(aesthetics, name = name, palette = palette, ...)
}

#' @rdname scale_shape
Expand Down
Loading
Loading