Skip to content

Commit b3bc1a7

Browse files
committed
Add codes argument to scale_[fill/colour]_discrete(), closes tidyverse#3826
1 parent d5b339a commit b3bc1a7

File tree

3 files changed

+36
-13
lines changed

3 files changed

+36
-13
lines changed

R/scale-hue.r

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,3 +63,38 @@ scale_fill_hue <- function(..., h = c(0, 360) + 15, c = 100, l = 65, h.start = 0
6363
discrete_scale(aesthetics, "hue", hue_pal(h, c, l, h.start, direction),
6464
na.value = na.value, ...)
6565
}
66+
67+
68+
#' @export
69+
#' @inheritParams scale_colour_hue
70+
#' @param codes a vector of color codes defining a qualitative color palette. These codes
71+
#' are used so long as the number of codes is greater or equal to the number of values they encode.
72+
scale_colour_discrete <- function(..., codes = okabeIto, h = c(0, 360) + 15, c = 100, l = 65, h.start = 0,
73+
direction = 1, na.value = "grey50", aesthetics = "colour") {
74+
discrete_scale(
75+
aesthetics, "qualitative", qualitative_pal(codes, h, c, l, h.start, direction),
76+
na.value = na.value, ...
77+
)
78+
}
79+
80+
#' @export
81+
#' @inheritParams scale_colour_discrete
82+
scale_fill_discrete <- function(..., codes = okabeIto, h = c(0, 360) + 15, c = 100, l = 65, h.start = 0,
83+
direction = 1, na.value = "grey50", aesthetics = "fill") {
84+
discrete_scale(
85+
aesthetics, "qualitative", qualitative_pal(codes, h, c, l, h.start, direction),
86+
na.value = na.value, ...
87+
)
88+
}
89+
90+
qualitative_pal <- function(codes, h, c, l, h.start, direction) {
91+
function(n) {
92+
if (n <= length(codes)) {
93+
codes[seq_len(n)]
94+
} else {
95+
scales::hue_pal(h, c, l, h.start, direction)(n)
96+
}
97+
}
98+
}
99+
100+
okabeIto <- c("#E69F00", "#009E73", "#0072B2", "#CC79A7", "#999999", "#D55E00", "#F0E442", "#56B4E9")

R/zxx.r

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,5 @@
11
# Default scales -------------------------------------------------------------
22

3-
#' @export
4-
#' @rdname scale_hue
5-
#' @usage NULL
6-
scale_colour_discrete <- scale_colour_hue
7-
83
#' @export
94
#' @rdname scale_viridis
105
#' @usage NULL
@@ -64,11 +59,6 @@ scale_colour_date <- function(...,
6459
#' @usage NULL
6560
scale_color_date <- scale_colour_date
6661

67-
#' @export
68-
#' @rdname scale_hue
69-
#' @usage NULL
70-
scale_fill_discrete <- scale_fill_hue
71-
7262
#' @export
7363
#' @rdname scale_viridis
7464
#' @usage NULL
@@ -143,7 +133,7 @@ scale_color_binned <- scale_colour_binned
143133
#' @export
144134
#' @rdname scale_hue
145135
#' @usage NULL
146-
scale_color_discrete <- scale_colour_hue
136+
scale_color_discrete <- scale_colour_discrete
147137

148138
#' @export
149139
#' @rdname scale_gradient

man/scale_hue.Rd

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)