On 02/18/2011 04:31 AM, Alaios wrote:> Dear all
> when I call color.scale like this:
>
>
> require('plotrix')
>
colcolor<-color.scale(c(range_sr,sr),extremes=c("red","blue"))
>
>
> Error in if (min(reds)<  0 || max(reds)>  1) reds<- rescale(reds,
c(0,  :
>    missing value where TRUE/FALSE needed
>
>
> range_sr
> [1] -10.00000000000000  44.02977813958366
>
> str(sr)
>   num [1:100, 1:100] 2.54 2.71 2.89 2.95 3.03 ...
>
>
> this was working on simpler data sets before.
>
> How can I understand more what was the problem in depth.? I have read the
source code of color.scale but unfortunately I did not make any progress to
understand this error message. Is it possible to raise an exception before the
error happens and see what went wrong?
>
Hi Alex,
When you concatenate (c) the extremes and the matrix, you get a vector:
 > sr<-matrix(runif(10000,-10,44.03),100,100)
 > str(sr)
  num [1:100, 1:100] 11.2 27.13 4.13 -4.46 26.44 ...
 > sr_colors<-color.scale(c(-10,44.03,sr))
 > str(sr_colors)
  chr [1:10002] "#000000" "#FFFFFF" "#646464"
"#AFAFAF" "#434343" ...
Recreate the matrix:
sr_colors<-matrix(sr_colors[-(1:2)],100,100)
and all should be well.
Jim