Skip to content

Commit

Permalink
Scales expose aesthetics argument (tidyverse#6227)
Browse files Browse the repository at this point in the history
* add news bullet

* add `aesthetics` as parameter

* redocument

* add news bullet
  • Loading branch information
teunbrand authored Jan 28, 2025
1 parent 7356fe3 commit c052d81
Show file tree
Hide file tree
Showing 16 changed files with 194 additions and 103 deletions.
1 change: 1 addition & 0 deletions NEWS.md
Original file line number Diff line number Diff line change
Expand Up @@ -287,6 +287,7 @@
* Munching in `coord_polar()` and `coord_radial()` now adds more detail,
particularly for data-points with a low radius near the center
(@teunbrand, #5023).
* All scales now expose the `aesthetics` parameter (@teunbrand, #5841)

# ggplot2 3.5.1

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
#' @details
Expand Down Expand Up @@ -49,16 +49,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

0 comments on commit c052d81

Please sign in to comment.