[R] color of opposite sign values in filled.contour
Jim Lemon
jim at bitwrit.com.au
Fri Jan 5 09:25:51 CET 2007
Claudia Tebaldi wrote:
> Dear R-helpers,
>
> I'm plotting geophysical data in the form of contours using
> "filled.contour". The display would be much more effective if the areas
> with negative values could be color coded
> by -- say -- "cold colors" in the range of blue to green, and conversely
> the areas with positive values got plotted with "warm colors", from yellow
> to red.
> Right now if I use a palette spanning the spectrum I need the entire range
> is associated with the actual range of the data, which can be positively
> or negatively skewed, and as a result the position of the zero is totally
> arbitrary.
> I'm wondering if someone out there has come up with a clever way to set
> the color scale accordingly, as a function of the actual range of the
> values in the matrix that is being plotted. Ideally, it would be neat to
> still use the entire spectrum, but sampling differently the cold and warm
> subsets accordingly to the extent of the negative and positive values in
> the data.
>
> Also, when I try to play around in an ad hoc fashion with the palette I
> often get funny results in the legend, with color-scale wrapping or blank
> cells at one of the extremes. I cannot hack effectively the code of the
> filled.contour function, obviously...
>
>
Hi Claudia,
Have a look at color.scale in the plotrix package. You can specify quite
a variety of different color ranges into which your numeric values will
be transformed. If you want different color ranges for positive and
negative values, you can calculate them separately. Here's an example
using blue to green for negative values and yellow to red for positive:
testval<-c(-3,6,-1,8,0,-2,4,10,12)
testcol<-rep(0,length(testval))
testcol[testval<0]<-color.scale(testval[testval<0],0,c(0,1),c(1,0))
testcol[testval>=0]<-color.scale(testval[testval>=0],1,c(1,0),0)
plot(testval,col=testcol,pch=19)
You might also be interested in color.scale.lines
Jim
More information about the R-help
mailing list