[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