R: Some useful color tables for images and tools to handle them.

tim.colors {fields} | R Documentation

## Some useful color tables for images and tools to handle them.

### Description

Several color scales useful for image plots: a pleasing rainbow style color table patterned after that used in Matlab by Tim Hoar and also some simple color interpolation schemes between two or more colors. There is also a function that converts between colors and a real valued vector.

### Usage

    tim.colors(n = 64, alpha=1.0)

    larry.colors()

    two.colors(n=256, start="darkgreen", end="red", middle="white",
    alpha=1.0)

    designer.colors( n=256, col= c("darkgreen", "white", "darkred"), x=
                                  seq(0,1,, length(col)) ,alpha=1.0)

    color.scale( z, col=tim.colors(256), zlim =NULL,
    transparent.color="white", eps= 1e-8)

    fieldsPlotColors( col,...)

### Arguments

`alpha` | The transparency of the color – 1.0 is opaque and 0 is transparent. This is useful for overlays of color and still being able to view the graphics that is covered.
`n` | Number of color levels. The setting `n`=64 is the orignal definition.
`start` | Starting color for lowest values in color scale
`end` | Ending color.
`middle` | Color scale passes through this color at halfway
`col` | A list of colors (names or hex values) to interpolate
`x` | Positions of colors on a [0,1] scale. Default is to assume that the x values are equally spacesd from 0 to 1.
`z` | Real vector to encode in a color table.
`zlim` | Range to use for color scale. Default is the `range(z)` inflated by 1- eps and 1+eps.
`transparent.color` | Color value to use for NA's or values outside `zlim`
`eps` | A small inflation of the range to avoid boundary values of `z` being coded as NAs
`...` | Additional plotting arguments to codeimage.plot

### Details

The color in R can be represented as three vectors in RGB coordinates and these coordinates are interpolated separately using a cubic spline to give color values that intermediate to the specified colors.

Ask Tim Hoar about `tim.colors`! He is a matlab black belt and this is his favorite scale in that system. `two.colors` is really about three different colors. For other colors try `fields.color.picker` to view possible choices. `start="darkgreen", end="azure4"` are the options used to get a nice color scale for rendering aerial photos of ski trails. (See http://www.image.ucar.edu/Data/MJProject.) `larry.colors` is a 13 color palette used by Larry McDaniel and is particularly useful for visualizing fields of climate variables.

`designer.color` is the master function for two.colors and tim.colors. It can be useful if one wants to customize the color table to match quantiles of a distribution. e.g. if the median of the data is at .3 with respect to the range then set `x` equal to c(0,.3,1) and specify three colors to provide a transtion that matches the median value. In fields language this function interpolates between a set of colors at locations x. While you can be creative about these colors just using another color scale as the basis is easy. For example

`designer.color( 256, rainbow(4), x= c( 0,.2,.8,1.0))`

leaves the choice of the colors to Dr. R after a thunderstorm.

`color.scale` assigns colors to a numerical vector in the same way as the `image` function. This is useful to kept the assigment of colors consistent across several vectors by specifiying a common `zlim` range.

`plotColorScale` A simple function to plot a vector of colors to examinet their values.

### Value

A vector giving the colors in a hexadecimal format, two extra hex digits are added for the alpha channel.

### See Also

topo.colors, terrain.colors, image.plot, quilt.plot, grey.scale, fields.color.picker

### Examples

    tim.colors(10)
    # returns an array of 10 character strings encoding colors in hex format

    # e.g. (red, green,  blue) values of   (16,255, 239)
    #   translates to "#10FFEF"
    # rgb( 16/255, 255/255, 239/255, alpha=.5)
    #   gives   "#10FFEF80"  note extra "alpha channel"

    # veiw some color table choices
    set.panel( 2,3)
    z<- outer( 1:20,1:20, "+")
    obj<- list( x=1:20,y=1:20,z=z )

    image( obj, col=tim.colors( 200)) # 200 levels

    image( obj, col=two.colors() )

    # using tranparency without alpha the image plot would cover points
    plot( 1:20,1:20)
    image(obj, col=two.colors(alpha=.5), add=TRUE)

    coltab<- designer.colors(col=c("blue", "grey", "green"),
                       x= c( 0,.3,1) )
    image( obj, col= coltab )

    # peg colors at some desired quantiles  of data.
    # NOTE need 0 and 1 for the color scale to make sense
    x<- quantile( c(z), c(0,.25,.5,.75,1.0) )
    # scale these to [0,1]
    zr<- range( c(z))
    x<- (x-zr[1])/ (zr[2] - zr[1])

    coltab<- designer.colors(256,rainbow(5), x)
    image( z, col= coltab )
    # see image.plot for adding all kinds of legends

    # some random color values
    set.seed(123)
    z<- rnorm(100)
    hex.codes<- color.scale(z, col=two.colors())
    N<-length( hex.codes)
    # take a look at the coded values
    # or equivalently create some Xmas wrapping paper!
    image( 1:N, N, matrix(1:N, N,1) , col=hex.codes, axes=FALSE,
                                   xlab="", ylab="")

    set.panel()

[Package fields version 9.6.1 Index]