# [Rd] new function: twotailed.colors {base}

Wolfram Fischer - Z/I/M wolfram@fischer-zim.ch
Fri Jan 24 10:25:23 2003

I suggest to add a new function to create a vector of
n contiguous'' colors with tails in two colors.
This function is similar to cm.colors' but the colors
can be choosen by hsv values.

This function could be used e.g. as alternative to
the default col.regions'' in levelplot'.

Perhaps the arguments in the following code could be
simplified.

Wolfram Fischer

#--- twotailed.colors.R

twotailed.colors <-
function(
n			= 7			# number of colors to be in the palette
, n5		= n %% 2	# number of colors between the two tails
, h1		= 0.02		# 0|1 = rot
, h2		= 0.15		# 0.7 = blau, 0.15 = samtgelb, 0.35 = grün
, s0		= 1			# saturation: begin and end
, s5		= 1/n*1.4	# saturation: in the middle
, v0		= 1			# value: begin and end
, v5		= 1			# value: in the middle
, s01		= s0		# beginning saturation of first tail
, s02		= s0		# ending saturation of second tail
, s51		= s5		# middle saturation on of first tail
, s52		= s5		# middle saturation on of second tail
, v01		= v0		# beginning value of first tail
, v02		= v0		# ending value of second tail
, v51		= v5		# middle value on of first tail
, v52		= v5		# middle value on of second tail
, n.tail	= ( n - n5 ) %/% 2
# number of colors in each tail
, s1		= seq( s01, s51, length = n.tail )
, s2		= seq( s52, s02, length = n.tail )
, v1		= seq( v01, v51, length = n.tail )
, v2		= seq( v52, v02, length = n.tail )
){
c(	hsv( h1, s1, v1 )
,	rep( hsv( h1, round(s5,0), v5 ), n5 )
,	hsv( h2, s2, v2 )
)
}

#--- twotailed.colors.Rd

\name{twotailed.colors}
\alias{twotailed.colors}
\title{Two tailed color palette}
\description{
Create a vector of \code{n} contiguous'' colors
with tails in two colors.
}
\usage{
twotailed.colors( n = 7, n5 = n %% 2, h1 = 0.02, h2 = 0.15
, s0 = 1, s5 = 1/n*1.4, v0 = 1, v5 = 1
, s01 = s0, s02 = s0, s51 = s5, s52 = s5
, v01 = v0, v02 = v0, v51 = v5, v52 = v5
, n.tail = ( n - n5 ) %/% 2
, s1 = seq( s01, s51, length = n.tail )
, s2 = seq( s52, s02, length = n.tail )
, v1 = seq( v01, v51, length = n.tail )
, v2 = seq( v52, v02, length = n.tail )
)
}
\arguments{
\item{n}{ number of colors to be in the palette.}
\item{n5}{ number of colors between the two tails.}
\item{h1,h2}{values in the range \code{[0,1]} for the
hue'' of the color of each tail, e.g.:
0 for red,
0.15 for yellow,
0.35 for green,
0.7 for blue.}
\item{s0}{ saturation: begin and end.}
\item{s5}{ saturation: in the middle.}
\item{v0}{ value: begin and end.}
\item{v5}{ value: in the middle.}
\item{s01}{ beginning saturation of the first tail.}
\item{s02}{ ending saturation of the second tail.}
\item{s51,s52}{ middle saturation on of the first and the second tail.}
\item{v01}{ beginning value of the first tail.}
\item{v02}{ ending value of the second tail.}
\item{v51,v52}{ middle value on of the first and the second tail.}
\item{n.tail}{ number of colors in each tail.}
\item{s1,s2}{ vector of saturations of first and the second tail.}
\item{v1,v2}{ vector of values of the first and the tail.}
}
\details{
}
\value{A character vector, \code{cv}, of color names.  This can be used
either to create a user--defined color palette for subsequent
graphics by \code{\link{palette}(cv)}, a \code{col=} specification
in graphics functions or in \code{par}.
}
\seealso{
translating to RGB numbers.
}
\author{
Wolfram Fischer
}
\examples{
twotailed.colors(12)
twotailed.colors(24,12)
showcolors( twotailed.colors(24,12) )

}
\keyword{color}
\keyword{dplot}

#---