Skip to content

Commit 418e4dc

Browse files
authored
Color scales select best default palette based on whether discrete or continuous scales are requested. (#388)
* Color scales select best default palette based on whether discrete or continuous scales are requested. * news, desc * lintr * add gradient scale * lintr * update news * update rd * lintr
1 parent f6cf7f9 commit 418e4dc

26 files changed

+508
-324
lines changed

DESCRIPTION

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
Type: Package
22
Package: see
33
Title: Model Visualisation Toolbox for 'easystats' and 'ggplot2'
4-
Version: 0.10.0.7
4+
Version: 0.10.0.8
55
Authors@R:
66
c(person(given = "Daniel",
77
family = "Lüdecke",

NEWS.md

+6
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,12 @@
1616
to the plot and slightly increase the distance between axis labels and the
1717
related axis.
1818

19+
* Color scale functions (those starting with `scale_*()`) get a new `"gradient"`
20+
palette, which are simply the color values for blue and orange colors from that
21+
palette. Furthermore, color scale functions now automatically select an
22+
appropriate palette (usually, `"contrast"` or `"gradient"`) depending on
23+
whether discrete or continuous color scales are requested.
24+
1925
# see 0.10.0
2026

2127
## Changes

R/scale_color_bluebrown.R

+38-16
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,19 @@
1616
#' theme_modern() +
1717
#' scale_fill_bluebrown_d()
1818
#' @export
19-
scale_color_bluebrown <- function(palette = "contrast", discrete = TRUE, reverse = FALSE, aesthetics = "color", ...) {
19+
scale_color_bluebrown <- function(palette = NULL,
20+
discrete = TRUE,
21+
reverse = FALSE,
22+
aesthetics = "color",
23+
...) {
24+
if (is.null(palette)) {
25+
if (discrete) {
26+
palette <- "contrast"
27+
} else {
28+
palette <- "gradient"
29+
}
30+
}
31+
2032
pal <- palette_bluebrown(palette = palette, reverse = reverse)
2133

2234
if (discrete) {
@@ -32,7 +44,7 @@ scale_color_bluebrown <- function(palette = "contrast", discrete = TRUE, reverse
3244

3345
#' @rdname scale_color_bluebrown
3446
#' @export
35-
scale_color_bluebrown_d <- function(palette = "contrast",
47+
scale_color_bluebrown_d <- function(palette = NULL,
3648
discrete = TRUE,
3749
reverse = FALSE,
3850
aesthetics = "color",
@@ -48,7 +60,7 @@ scale_color_bluebrown_d <- function(palette = "contrast",
4860

4961
#' @rdname scale_color_bluebrown
5062
#' @export
51-
scale_color_bluebrown_c <- function(palette = "contrast",
63+
scale_color_bluebrown_c <- function(palette = NULL,
5264
discrete = FALSE,
5365
reverse = FALSE,
5466
aesthetics = "color",
@@ -80,11 +92,19 @@ scale_colour_bluebrown_d <- scale_color_bluebrown_d
8092

8193
#' @rdname scale_color_bluebrown
8294
#' @export
83-
scale_fill_bluebrown <- function(palette = "contrast",
95+
scale_fill_bluebrown <- function(palette = NULL,
8496
discrete = TRUE,
8597
reverse = FALSE,
8698
aesthetics = "fill",
8799
...) {
100+
if (is.null(palette)) {
101+
if (discrete) {
102+
palette <- "contrast"
103+
} else {
104+
palette <- "gradient"
105+
}
106+
}
107+
88108
pal <- palette_bluebrown(palette = palette, reverse = reverse)
89109

90110
if (discrete) {
@@ -97,7 +117,7 @@ scale_fill_bluebrown <- function(palette = "contrast",
97117

98118
#' @rdname scale_color_bluebrown
99119
#' @export
100-
scale_fill_bluebrown_d <- function(palette = "contrast",
120+
scale_fill_bluebrown_d <- function(palette = NULL,
101121
discrete = TRUE,
102122
reverse = FALSE,
103123
aesthetics = "fill",
@@ -113,7 +133,7 @@ scale_fill_bluebrown_d <- function(palette = "contrast",
113133

114134
#' @rdname scale_color_bluebrown
115135
#' @export
116-
scale_fill_bluebrown_c <- function(palette = "contrast",
136+
scale_fill_bluebrown_c <- function(palette = NULL,
117137
discrete = FALSE,
118138
reverse = FALSE,
119139
aesthetics = "fill",
@@ -132,13 +152,13 @@ scale_fill_bluebrown_c <- function(palette = "contrast",
132152

133153

134154
bluebrown_colors_list <- c(
135-
`lightblue` = "#6DC0E0",
136-
`blue` = "#5B93AE",
137-
`darkblue` = "#1F4454",
138-
`grey` = "#dbdbdb",
139-
`lightbrown` = "#92673C",
140-
`brown` = "#61381A",
141-
`darkbrown` = "#391D07"
155+
lightblue = "#6DC0E0",
156+
blue = "#5B93AE",
157+
darkblue = "#1F4454",
158+
grey = "#dbdbdb",
159+
lightbrown = "#92673C",
160+
brown = "#61381A",
161+
darkbrown = "#391D07"
142162
)
143163

144164

@@ -168,9 +188,11 @@ bluebrown_colors <- function(...) {
168188

169189

170190
bluebrown_palettes <- list(
171-
`full` = bluebrown_colors(),
172-
`contrast` = bluebrown_colors("lightblue", "blue", "darkblue", "grey", "darkbrown", "brown", "lightbrown"),
173-
`rainbow` = bluebrown_colors("darkblue", "blue", "lightblue", "grey", "lightbrown", "brown", "darkbrown")
191+
full = bluebrown_colors(),
192+
contrast = bluebrown_colors("lightblue", "blue", "darkblue", "grey", "darkbrown", "brown", "lightbrown"),
193+
rainbow = bluebrown_colors("darkblue", "blue", "lightblue", "grey", "lightbrown", "brown", "darkbrown"),
194+
complement = bluebrown_colors("darkblue", "blue", "lightblue", "grey", "lightbrown", "brown", "darkbrown"),
195+
gradient = bluebrown_colors("blue", "brown")
174196
)
175197

176198

R/scale_color_flat.R

+52-31
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
#' Flat UI color palette
22
#'
3-
#' The palette based on [Flat UI](https://materialui.co/flatuicolors).
4-
#' Use `scale_color_flat_d` for *discrete* categories and
5-
#' `scale_color_flat_c` for a *continuous* scale.
3+
#' The palette based on [Flat UI](https://materialui.co/flatuicolors). Use
4+
#' `scale_color_flat_d` for *discrete* categories and `scale_color_flat_c` for a
5+
#' *continuous* scale, or use the `discrete` argument in `scale_color_flat()`.
66
#'
77
#' @inheritParams palette_flat
88
#' @param discrete Boolean indicating whether color aesthetic is discrete or not.
@@ -18,23 +18,31 @@
1818
#' ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) +
1919
#' geom_boxplot() +
2020
#' theme_modern() +
21-
#' scale_fill_flat_d()
21+
#' scale_fill_flat()
2222
#'
2323
#' ggplot(iris, aes(x = Species, y = Sepal.Length, fill = Species)) +
2424
#' geom_violin() +
2525
#' theme_modern() +
26-
#' scale_fill_flat_d(palette = "ice")
26+
#' scale_fill_flat(palette = "ice")
2727
#'
2828
#' ggplot(iris, aes(x = Petal.Length, y = Petal.Width, color = Sepal.Length)) +
2929
#' geom_point() +
3030
#' theme_modern() +
31-
#' scale_color_flat_c(palette = "rainbow")
31+
#' scale_color_flat(discrete = FALSE)
3232
#' @export
33-
scale_color_flat <- function(palette = "contrast",
33+
scale_color_flat <- function(palette = NULL,
3434
discrete = TRUE,
3535
reverse = FALSE,
3636
aesthetics = "color",
3737
...) {
38+
if (is.null(palette)) {
39+
if (discrete) {
40+
palette <- "contrast"
41+
} else {
42+
palette <- "gradient"
43+
}
44+
}
45+
3846
pal <- palette_flat(palette = palette, reverse = reverse)
3947

4048
if (discrete) {
@@ -50,7 +58,7 @@ scale_color_flat <- function(palette = "contrast",
5058

5159
#' @rdname scale_color_flat
5260
#' @export
53-
scale_color_flat_d <- function(palette = "contrast",
61+
scale_color_flat_d <- function(palette = NULL,
5462
discrete = TRUE,
5563
reverse = FALSE,
5664
aesthetics = "color",
@@ -66,7 +74,7 @@ scale_color_flat_d <- function(palette = "contrast",
6674

6775
#' @rdname scale_color_flat
6876
#' @export
69-
scale_color_flat_c <- function(palette = "contrast",
77+
scale_color_flat_c <- function(palette = NULL,
7078
discrete = FALSE,
7179
reverse = FALSE,
7280
aesthetics = "color",
@@ -98,11 +106,19 @@ scale_colour_flat_d <- scale_color_flat_d
98106

99107
#' @rdname scale_color_flat
100108
#' @export
101-
scale_fill_flat <- function(palette = "contrast",
109+
scale_fill_flat <- function(palette = NULL,
102110
discrete = TRUE,
103111
reverse = FALSE,
104112
aesthetics = "fill",
105113
...) {
114+
if (is.null(palette)) {
115+
if (discrete) {
116+
palette <- "contrast"
117+
} else {
118+
palette <- "gradient"
119+
}
120+
}
121+
106122
pal <- palette_flat(palette = palette, reverse = reverse)
107123

108124
if (discrete) {
@@ -115,7 +131,7 @@ scale_fill_flat <- function(palette = "contrast",
115131

116132
#' @rdname scale_color_flat
117133
#' @export
118-
scale_fill_flat_d <- function(palette = "contrast",
134+
scale_fill_flat_d <- function(palette = NULL,
119135
discrete = TRUE,
120136
reverse = FALSE,
121137
aesthetics = "fill",
@@ -131,7 +147,7 @@ scale_fill_flat_d <- function(palette = "contrast",
131147

132148
#' @rdname scale_color_flat
133149
#' @export
134-
scale_fill_flat_c <- function(palette = "contrast",
150+
scale_fill_flat_c <- function(palette = NULL,
135151
discrete = FALSE,
136152
reverse = FALSE,
137153
aesthetics = "fill",
@@ -151,21 +167,21 @@ scale_fill_flat_c <- function(palette = "contrast",
151167

152168
# The palette based on flat design colors: https://www.materialui.co/flatuicolors
153169
flat_colors_list <- c(
154-
`red` = "#e74c3c",
170+
red = "#e74c3c",
155171
`dark red` = "#c0392b",
156-
`purple` = "#9b59b6",
172+
purple = "#9b59b6",
157173
`deep purple` = "#8e44ad",
158-
`blue` = "#2980b9",
174+
blue = "#2980b9",
159175
`light blue` = "#3498db",
160-
`cyan` = "#1abc9c",
161-
`teal` = "#16a085",
162-
`green` = "#27ae60",
176+
cyan = "#1abc9c",
177+
teal = "#16a085",
178+
green = "#27ae60",
163179
`light green` = "#2ecc71",
164-
`yellow` = "#f1c40f",
165-
`amber` = "#f39c12",
166-
`orange` = "#e67e22",
180+
yellow = "#f1c40f",
181+
amber = "#f39c12",
182+
orange = "#e67e22",
167183
`deep orange` = "#d35400",
168-
`grey` = "#95a5a6",
184+
grey = "#95a5a6",
169185
`blue grey` = "#7f8c8d"
170186
)
171187

@@ -196,9 +212,10 @@ flat_colors <- function(...) {
196212

197213

198214
flat_palettes <- list(
199-
`full` = flat_colors(),
200-
`ice` = flat_colors("purple", "deep purple", "blue", "light blue"),
201-
`rainbow` = flat_colors(
215+
full = flat_colors(),
216+
ice = flat_colors("purple", "deep purple", "blue", "light blue"),
217+
gradient = flat_colors("blue", "orange"),
218+
rainbow = flat_colors(
202219
"purple",
203220
"deep purple",
204221
"blue",
@@ -210,9 +227,9 @@ flat_palettes <- list(
210227
"deep orange",
211228
"red"
212229
),
213-
`contrast` = flat_colors("blue", "green", "amber", "purple", "red"),
214-
`light` = flat_colors("light blue", "purple", "yellow", "light green", "orange"),
215-
`complement` = flat_colors(
230+
contrast = flat_colors("blue", "green", "amber", "purple", "red"),
231+
light = flat_colors("light blue", "purple", "yellow", "light green", "orange"),
232+
complement = flat_colors(
216233
"blue grey",
217234
"blue",
218235
"light blue",
@@ -231,9 +248,13 @@ flat_palettes <- list(
231248
#' The palette based on [Flat UI](https://materialui.co/flatuicolors).
232249
#'
233250
#' @param palette Character name of palette. Depending on the color scale, can
234-
#' be `"full"`, `"ice"`, `"rainbow"`, `"complement"`,
235-
#' `"contrast"`, `"light"` (for dark themes), `"black_first"`, `full_original`,
236-
#' or `black_first_original`.
251+
#' be one of `"full"`, `"ice"`, `"rainbow"`, `"complement"`, `"contrast"`,
252+
#' `"light"` (for dark themes), `"black_first"`, `full_original`, or
253+
#' `black_first_original`. The latter three options are especially for the
254+
#' Okabe-Ito color palette. The default is `NULL` and either `"contrast"` or
255+
#' `"gradient"` is used (depending on whether `discrete` is `TRUE` or `FALSE`),
256+
#' which are the two scale useful for discrete or gradient color scales,
257+
#' respectively.
237258
#' @param reverse Boolean indicating whether the palette should be reversed.
238259
#' @param ... Additional arguments to pass to [`colorRampPalette()`][colorRampPalette].
239260
#'

0 commit comments

Comments
 (0)