palette {grDevices} | R Documentation |
Set or View the Graphics Palette
Description
View or manipulate the color palette which is used when col=
has a numeric index and supporting functions.
Usage
palette(value)
palette.pals()
palette.colors(n = NULL, palette = "Okabe-Ito", alpha, recycle = FALSE,
names = FALSE)
Arguments
value |
an optional character vector specifying a new palette (see Details). |
n |
the number of colors to select from a palette. The default
|
palette |
a valid palette name (one of |
alpha |
an alpha-transparency level in the range [0,1] (0 means transparent and 1 means opaque). |
recycle |
logical indicating what happens in case |
names |
logical indicating whether a named vector of colors should be returned or not (provided that the palette has any names for its colors). |
Details
The palette()
function gets or sets the current palette,
the palette.pals()
function lists the available predefined
palettes, and the palette.colors()
function
selects colors from the predefined palettes.
The color palette and referring to colors by number (see
e.g. par
) was provided for compatibility with S.
R extends and improves on the available set of palettes.
If value
has length 1, it is taken to be the name of a built-in
color palette. The available palette names are returned by
palette.pals()
. It is also possible to specify "default"
.
If value
has length greater than 1 it is assumed to contain a
description of the colors which are to make up the new palette.
The maximum size for a palette is 1024
entries.
If value
is omitted, no change is made to the current palette.
There is only one palette setting for all devices in an R session. If the palette is changed, the new palette applies to all subsequent plotting.
The current palette also applies to re-plotting (for example if an
on-screen device is resized or dev.copy
or
replayPlot
is used). The palette is recorded on the
display list at the start of each page and when it is changed.
Value
palette()
returns a character vector giving the colors from the
palette which was in effect.
This is invisible
unless the argument is omitted.
palette.pals()
returns a character vector giving the names
of predefined palettes.
palette.colors()
returns a vector of R colors. By default (if
names = FALSE
the vector has no names. If names = TRUE
,
the function attempts to return a named vector if possible, i.e.,
for those palettes that provide names for their colors (e.g.,
"Okabe-Ito"
, "Tableau 10"
, or "Alphabet"
).
See Also
colors
for the vector of built-in named colors;
hsv
, gray
,
hcl.colors
, ... to construct colors.
adjustcolor
, e.g., for tweaking existing palettes;
colorRamp
to interpolate colors, making custom palettes;
col2rgb
for translating colors to RGB 3-vectors.
Examples
require(graphics)
palette() # obtain the current palette
palette("R3");palette() # old default palette
palette("ggplot2") # ggplot2-style palette
palette()
palette(hcl.colors(8, "viridis"))
(palette(gray(seq(0,.9,length.out = 25)))) # gray scales; print old palette
matplot(outer(1:100, 1:30), type = "l", lty = 1,lwd = 2, col = 1:30,
main = "Gray Scales Palette",
sub = "palette(gray(seq(0, .9, len=25)))")
palette("default") # reset back to the default
## on a device where alpha transparency is supported,
## use 'alpha = 0.3' transparency with the default palette :
mycols <- adjustcolor(palette(), alpha.f = 0.3)
opal <- palette(mycols)
x <- rnorm(1000); xy <- cbind(x, 3*x + rnorm(1000))
plot (xy, lwd = 2,
main = "Alpha-Transparency Palette\n alpha = 0.3")
xy[,1] <- -xy[,1]
points(xy, col = 8, pch = 16, cex = 1.5)
palette("default")
## List available built-in palettes
palette.pals()
## Demonstrate the colors 1:8 in different palettes using a custom matplot()
sinplot <- function(main=NULL, n = 8) {
x <- outer(
seq(-pi, pi, length.out = 50),
seq( 0, pi, length.out = n),
function(x, y) sin(x - y)
)
matplot(x, type = "l", lwd = 4, lty = 1, col = 1:n, ylab = "", main=main)
}
sinplot("default palette")
palette("R3"); sinplot("R3")
palette("Okabe-Ito"); sinplot("Okabe-Ito")
palette("Tableau") ; sinplot("Tableau", n = 10)
palROB <- colorRampPalette(c("red", "darkorange2", "blue"), space = "Lab")
palette(palROB(16)); sinplot("palROB(16)", n = 16)
palette("default") # reset
## color swatches for palette.colors()
palette.swatch <- function(palette = palette.pals(), n = 8, nrow = 8,
border = "black", cex = 1, ...)
{
cols <- sapply(palette, palette.colors, n = n, recycle = TRUE)
ncol <- ncol(cols)
nswatch <- min(ncol, nrow)
op <- par(mar = rep(0.1, 4),
mfrow = c(1, min(5, ceiling(ncol/nrow))),
cex = cex, ...)
on.exit(par(op))
while (length(palette)) {
subset <- seq_len(min(nrow, ncol(cols)))
plot.new()
plot.window(c(0, n), c(0.25, nrow + 0.25))
y <- rev(subset)
text(0, y + 0.1, palette[subset], adj = c(0, 0))
y <- rep(y, each = n)
rect(rep(0:(n-1), n), y, rep(1:n, n), y - 0.5,
col = cols[, subset], border = border)
palette <- palette[-subset]
cols <- cols [, -subset, drop = FALSE]
}
}
palette.swatch()
palette.swatch(n = 26) # show full "Alphabet"; recycle most others