[R] need palette of topographic colors similar to topo.colors ()

Tuszynski, Jaroslaw W. JAROSLAW.W.TUSZYNSKI at saic.com
Mon Jan 9 15:43:46 CET 2006



I will second Roger's suggestion, colorRampPalette is a great function for
creating your own palettes. For example, Matlab's jet palette (also
available in fields package under peculiar name 'tim.colors') can be defined
by:

jet.colors = colorRampPalette(c("#00007F", "blue", "#007FFF", "cyan",
"#7FFF7F", "yellow", "#FF7F00", "red", "#7F0000")) 

Other predefined functions for creating and managing color palettes that I
know of, are:
    * R provides functions for creating palettes of continuous colors:
rainbow, topo.colors, heat.colors, terrain.colors.colors, gray
    * tim.colors in package fields contains palette similar to Matlab's jet
palette (see examples for simpler implementation)
    * rich.colors in package gplots contains two palettes of continuous
colors.
    * Functions brewer.pal from RColorBrewer package and colorbrewer.palette
from epitools package contain tools for generating palettes
    * rgb and hsv creates palette from RGB or HSV 3-vectors.

Maybe one of those will work for you.

Jarek

-----Original Message-----
From: r-help-bounces at stat.math.ethz.ch
[mailto:r-help-bounces at stat.math.ethz.ch] 
Sent: Saturday, January 07, 2006 3:10 PM
To: bogdan romocea
Cc: r-help
Subject: Re: [R] need palette of topographic colors similar to topo.colors()

On Sat, 7 Jan 2006, bogdan romocea wrote:

> Dear useRs,
> 
> I got stuck trying to generate a palette of topographic colors that
> would satisfy these two requirements:
>    - the pallete must be 'anchored' at 0 (just like on a map), with
> light blue/lawn green corresponding to data values close to 0 (dark
> blue to light blue for negative values, green-yellow-brown for
> positive values)
>    - the brown must get darker for higher positive values.
> 
> topo.colors() fails both requirements and AFAICS lacks any options to
> control its behavior.
>   #---unsatisfactory topo.colors() behavior
>   topoclr <- function(tgt)
>   {
>   clr <- topo.colors(length(tgt))
>   clr <- clr[round(rank(tgt),0)]
>   plot(tgt,pch=15,col=clr)
>   }
>   par(mfrow=c(2,1)) ; topoclr(-50:50) ; topoclr(-20:80)
> 
> An acceptable solution would be something like this
>   grayclr <- function(tgt)
>   {
>   tgt <- sort(tgt) ; neg <- which(tgt < 0)
>   clrneg <- gray(0:length(tgt[neg])/length(tgt[neg]))
>   clrpos <- gray(length(tgt[-neg]):0/length(tgt[-neg]))
>   clr <- c(clrneg,clrpos)
>   plot(tgt,pch=15,col=clr)
>   }
>   par(mfrow=c(2,1)) ; grayclr(-50:50) ; grayclr(-20:80)
> if only I could make gray() use blue/brown instead of black (I tried a
> couple of things but got stuck again).
> 
> Any suggestions?

Use colorRampPalette() to roll your own, or something better tuned, 
perhaps catenating two ramps together.

> 
> Thank you,
> b.
> 
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html
> 

-- 
Roger Bivand
Economic Geography Section, Department of Economics, Norwegian School of
Economics and Business Administration, Helleveien 30, N-5045 Bergen,
Norway. voice: +47 55 95 93 55; fax +47 55 95 95 43
e-mail: Roger.Bivand at nhh.no

______________________________________________
R-help at stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide!
http://www.R-project.org/posting-guide.html




More information about the R-help mailing list