Palettes {grDevices} | R Documentation |
Create a vector of n
“contiguous” colors.
rainbow(n, s = 1, v = 1, start = 0, end = max(1,n - 1)/n, gamma = 1, alpha = 1) heat.colors(n, alpha = 1) terrain.colors(n, alpha = 1) topo.colors(n, alpha = 1) cm.colors(n, alpha = 1)
n |
the number of colors (>= 1) to be in the palette. |
s,v |
the “saturation” and “value” to be used to complete the HSV color descriptions. |
start |
the (corrected) hue in [0,1] at which the rainbow begins. |
end |
the (corrected) hue in [0,1] at which the rainbow ends. |
gamma |
the gamma correction, see argument gamma in
hsv . |
alpha |
the alpha transparency, a number in [0,1], see argument
alpha in hsv . |
Conceptually, all of these functions actually use (parts of) a line
cut out of the 3-dimensional color space, parametrized by
hsv(h,s,v, gamma)
, where gamma
=1 for the
foo.colors
function, and hence,
equispaced hues in RGB space tend to cluster at
the red, green and blue primaries.
Some applications such as contouring require a palette of colors which do not “wrap around” to give a final color close to the starting one.
With rainbow
, the parameters start
and end
can be used
to specify particular subranges of hues.
The following values can be used when generating such a subrange:
red=0, yellow=1/6, green=2/6,
cyan=3/6, blue=4/6
and magenta=5/6.
A character vector, cv
, of color names. This can be used
either to create a user–defined color palette for subsequent
graphics by palette(cv)
, a col=
specification
in graphics functions or in par
.
colors
, palette
, hsv
,
hcl
, rgb
, gray
and
col2rgb
for translating to RGB numbers.
require(graphics) # A Color Wheel pie(rep(1,12), col=rainbow(12)) ##------ Some palettes ------------ demo.pal <- function(n, border = if (n<32) "light gray" else NA, main = paste("color palettes; n=",n), ch.col = c("rainbow(n, start=.7, end=.1)", "heat.colors(n)", "terrain.colors(n)", "topo.colors(n)", "cm.colors(n)")) { nt <- length(ch.col) i <- 1:n; j <- n / nt; d <- j/6; dy <- 2*d plot(i,i+d, type="n", yaxt="n", ylab="", main=main) for (k in 1:nt) { rect(i-.5, (k-1)*j+ dy, i+.4, k*j, col = eval(parse(text=ch.col[k])), border = border) text(2*j, k * j +dy/4, ch.col[k]) } } n <- if(.Device == "postscript") 64 else 16 # Since for screen, larger n may give color allocation problem demo.pal(n)