1
1
# ' Set, get, or view color schemes
2
2
# '
3
3
# ' Set, get, or view color schemes. Choose from a preset scheme or create a
4
- # ' custom scheme.
4
+ # ' custom scheme. See the **Available color schemes** section below for a list
5
+ # ' of available scheme names. The **Custom color schemes** section describes how
6
+ # ' to specify a custom scheme.
5
7
# '
8
+ # ' @md
6
9
# ' @name bayesplot-colors
10
+ # ' @param scheme For `color_scheme_set()`, either a string naming one of the
11
+ # ' available color schemes or a character vector of _exactly six_ colors
12
+ # ' specifying a custom scheme.
7
13
# '
8
- # ' @param scheme For \code{color_scheme_set}, either a string naming one of the
9
- # ' available color schemes or a character vector of \emph{exactly six} colors
10
- # ' specifying a custom scheme (see the \strong{Custom Color Schemes} section,
11
- # ' below, for more on specifying a custom scheme).
12
- # '
13
- # ' For \code{color_scheme_get}, \code{scheme} can be missing (to get the
14
+ # ' For `color_scheme_get()`, `scheme` can be missing (to get the
14
15
# ' current color scheme) or a string naming one of the preset schemes.
15
16
# '
16
- # ' For \code{ color_scheme_view}, \code{ scheme} can be missing (to use the
17
+ # ' For ` color_scheme_view()`, ` scheme` can be missing (to use the
17
18
# ' current color scheme) or a character vector containing a subset of the
18
19
# ' available scheme names.
19
20
# '
20
- # ' Currently, the available preset color schemes are:
21
- # ' \itemize{
22
- # ' \item \code{"blue"}, \code{"brightblue"}
23
- # ' \item \code{"gray"}, \code{"darkgray"}
24
- # ' \item \code{"green"}
25
- # ' \item \code{"pink"}
26
- # ' \item \code{"purple"}
27
- # ' \item \code{"red"}
28
- # ' \item \code{"teal"}
29
- # ' \item \code{"yellow"}
30
- # ' \item \href{https://CRAN.R-project.org/package=viridis}{\code{"viridis"}},
31
- # ' \code{"viridisA"}, \code{"viridisB"}, \code{"viridisC"}
32
- # ' \item \code{"mix-x-y"}, replacing \code{x} and \code{y} with any two of
33
- # ' the scheme names listed above (e.g. "mix-teal-pink", "mix-blue-red",
34
- # ' etc.). The order of \code{x} and \code{y} matters, i.e., the color
35
- # ' schemes "mix-blue-red" and "mix-red-blue" are not identical. There is no
36
- # ' guarantee that every possible mixed scheme will look good with every
37
- # ' possible plot.
38
- # ' }
39
- # '
40
- # ' If you have a suggestion for a new color scheme please let us know via the
41
- # ' \pkg{bayesplot} \href{https://github.com/stan-dev/bayesplot/issues}{issue
42
- # ' tracker}.
21
+ # ' See the **Available color schemes** section below for a list of available
22
+ # ' scheme names. The **Custom color schemes** section describes how to specify
23
+ # ' a custom scheme.
43
24
# '
44
- # ' @return \code{color_scheme_set} has the side effect of setting the color
45
- # ' scheme used for plotting. It also returns
46
- # ' (\code{\link[=invisible]{invisibly}}) a list of the hexidecimal color
47
- # ' values used in \code{scheme}.
25
+ # ' @return `color_scheme_set()` has the side effect of setting the color scheme
26
+ # ' used for plotting. It also returns ([invisibly][base::invisible]) a list of
27
+ # ' the hexidecimal color values used in `scheme`.
48
28
# '
49
- # ' \code{ color_scheme_get} returns a \code{ list} of the hexadecimal color
50
- # ' values (without changing the current scheme). If the \code{ scheme} argument
29
+ # ' ` color_scheme_get()` returns a list of the hexadecimal color
30
+ # ' values (without changing the current scheme). If the ` scheme` argument
51
31
# ' is not specified the returned values correspond to the current color
52
- # ' scheme. If the optional argument \code{i} is specified then the returned
53
- # ' list only contains \code{ length(i)} elements.
32
+ # ' scheme. If the optional argument `i` is specified then the returned
33
+ # ' list only contains ` length(i)` elements.
54
34
# '
55
- # ' \code{ color_scheme_view} returns a ggplot object if only a single scheme is
35
+ # ' ` color_scheme_view()` returns a ggplot object if only a single scheme is
56
36
# ' specified and a gtable object if multiple schemes names are specified.
57
37
# '
58
- # ' @section Custom Color Schemes: A \pkg{bayesplot} color scheme consists of six
38
+ # ' @section Available color schemes: Currently, the available preset color
39
+ # ' schemes are:
40
+ # ' * `"blue"`, `"brightblue"`
41
+ # ' * `"gray"`, `"darkgray"`
42
+ # ' * `"green"`
43
+ # ' * `"pink"`
44
+ # ' * `"purple"`
45
+ # ' * `"red"`
46
+ # ' * `"teal"`
47
+ # ' * `"yellow"`
48
+ # ' * [`"viridis"`](https://CRAN.R-project.org/package=viridis), `"viridisA"`,
49
+ # ' `"viridisB"`, `"viridisC"`
50
+ # ' * `"mix-x-y"`, replacing `x` and `y` with any two of
51
+ # ' the scheme names listed above (e.g. "mix-teal-pink", "mix-blue-red",
52
+ # ' etc.). The order of `x` and `y` matters, i.e., the color schemes
53
+ # ' `"mix-blue-red"` and `"mix-red-blue"` are not identical. There is no
54
+ # ' guarantee that every possible mixed scheme will look good with every
55
+ # ' possible plot.
56
+ # ' * `"brewer-x"`, replacing `x` with the name of a palette available from
57
+ # ' [RColorBrewer::brewer.pal()] (e.g., `brewer-PuBuGn`).
58
+ # '
59
+ # ' If you have a suggestion for a new color scheme please let us know via the
60
+ # ' **bayesplot** [issue tracker](https://github.com/stan-dev/bayesplot/issues).
61
+ # '
62
+ # ' @section Custom color schemes: A **bayesplot** color scheme consists of six
59
63
# ' colors. To specify a custom color scheme simply pass a character vector
60
- # ' containing either the names of six \code{\link[grDevices]{ colors}} or six
64
+ # ' containing either the names of six [colors][grDevices:: colors] or six
61
65
# ' hexidecimal color values (or a mix of names and hex values). The colors
62
66
# ' should be in order from lightest to darkest. See the end of the
63
- # ' \strong{ Examples} section for a demonstration.
67
+ # ' ** Examples** section for a demonstration.
64
68
# '
65
69
# ' @template seealso-theme
66
70
# '
@@ -128,10 +132,11 @@ color_scheme_set <- function(scheme = "blue") {
128
132
}
129
133
130
134
# ' @rdname bayesplot-colors
135
+ # ' @md
131
136
# ' @export
132
- # ' @param i For \code{ color_scheme_get} , a subset of the integers from \code{1}
133
- # ' (lightest) to \code{6} (darkest) indicating which of the colors in the
134
- # ' scheme to return. If \code{i} is not specified then all six colors in the
137
+ # ' @param i For ` color_scheme_get()` , a subset of the integers from `1`
138
+ # ' (lightest) to `6` (darkest) indicating which of the colors in the
139
+ # ' scheme to return. If `i` is not specified then all six colors in the
135
140
# ' scheme are included.
136
141
# '
137
142
color_scheme_get <- function (scheme , i ) {
@@ -229,11 +234,19 @@ scheme_from_string <- function(scheme) {
229
234
if (identical(substr(scheme , 1 , 4 ), " mix-" )) {
230
235
to_mix <- unlist(strsplit(scheme , split = " -" ))[2 : 3 ]
231
236
x <- setNames(mixed_scheme(to_mix [1 ], to_mix [2 ]), scheme_level_names())
232
- structure(x , mixed = TRUE , scheme_name = scheme )
237
+ return (structure(x , mixed = TRUE , scheme_name = scheme ))
238
+ } else if (identical(substr(scheme , 1 , 7 ), " brewer-" )) {
239
+ if (! requireNamespace(" RColorBrewer" , quietly = TRUE )) {
240
+ stop(" Please install the 'RColorBrewer' package to use a ColorBrewer scheme." ,
241
+ call. = FALSE )
242
+ }
243
+ clrs <- RColorBrewer :: brewer.pal(n = 6 , name = gsub(" brewer-" , " " , scheme ))
244
+ x <- setNames(as.list(clrs ), scheme_level_names())
245
+ return (structure(x , mixed = FALSE , scheme_name = scheme ))
233
246
} else {
234
247
scheme <- match.arg(scheme , choices = names(master_color_list ))
235
248
x <- prepare_colors(scheme )
236
- structure(x , mixed = FALSE , scheme_name = scheme )
249
+ return ( structure(x , mixed = FALSE , scheme_name = scheme ) )
237
250
}
238
251
}
239
252
@@ -244,13 +257,14 @@ is_mixed_scheme <- function(x) {
244
257
isTRUE(attr(x , " mixed" ))
245
258
}
246
259
247
- # Access a subset of the scheme colors
248
- #
249
- # @param level A character vector of level names (see scheme_level_names()). The
250
- # abbreviations "l", "lh", "m", "mh", "d", and "dh" can also be used instead
251
- # of the full names.
252
- # @return A character vector of color values.
253
- #
260
+ # ' Access a subset of the scheme colors
261
+ # '
262
+ # ' @noRd
263
+ # ' @param level A character vector of level names (see `scheme_level_names()`).
264
+ # ' The abbreviations "l", "lh", "m", "mh", "d", and "dh" can also be used
265
+ # ' instead of the full names.
266
+ # ' @return A character vector of color values.
267
+ # '
254
268
get_color <- function (levels ) {
255
269
sel <- which(! levels %in% scheme_level_names())
256
270
if (length(sel ))
0 commit comments