[R] Help with color.scale {plotrix}

Kumar Mainali kpmainali at gmail.com
Sat Oct 10 00:08:33 CEST 2015


Sarah, what you suggested solved the problem. Below is the code:

cellcol[x<0.33 & !is.na(x)] <- color.scale(x[x<0.33 & !is.na(x)],
c(1,1),c(0,1),c(0,1), xrange=c(0,0.33))

Including xrange in color.scale function makes a slight difference in my
plot. I want to use the same scale to many matrices so that the color scale
can be compared across plots which can differ in range. I believe setting
xrange solves the problem.

ᐧ

Postdoctoral Associate
Department of Biology
University of Maryland, College Park

On Fri, Oct 9, 2015 at 6:02 PM, Sarah Goslee <sarah.goslee at gmail.com> wrote:

> This is the error message:
>
> > > Error in cellcol[x < 0.33] <- color.scale(x[x < 0.33], c(1, 0.8),
> c(0,  :
> > >   NAs are not allowed in subscripted assignments
>
> x has NA values, but is being used for subscripting.
>
> either use
>
> cellcol[!is.na(x) & x < 0.33]
>
> or specify a NA value for color.scale() and let it handle the missing
> values.
>
> > cellcol[x<0.33]<-color.scale(x[x<0.33],c(1,0.8),c(0,0.8),0, na.color=NA)
> Error in cellcol[x < 0.33] <- color.scale(x[x < 0.33], c(1, 0.8), c(0,  :
>   NAs are not allowed in subscripted assignments
>
>
> vs
>
> > cellcol <- color.scale(x, c(1,0.8),c(0,0.8),0, na.color=NA)
>
> Which doesn't help with the < 0.33 part, but you could set the values
> > 0.33 to NA first.
>
>
>
>
> On Fri, Oct 9, 2015 at 5:49 PM, William Dunlap <wdunlap at tibco.com> wrote:
> > Try setting the na.color argument of color.scale to a color string,
> > not NA.  "#00000000" (alpha = 0 is the key part) is transparent so it it
> > might
> > suit your needs.
> >
> > Bill Dunlap
> > TIBCO Software
> > wdunlap tibco.com
> >
> > On Fri, Oct 9, 2015 at 12:26 PM, Kumar Mainali <kpmainali at gmail.com>
> wrote:
> >>
> >> Hi Sarah,
> >>
> >> Thanks for the explanation. This solves my first problem. I hope
> somebody
> >> will be able to answer my second question. Copied here from previous
> email
> >> >>
> >>
> >> Another question: some of my matrices have missing cells and I do not
> want
> >> to assign any colors to the missing cells. The following code gives me
> >> error. I am trying to use the output (cellcol) to the
> >> function color2D.matplot.
> >>
> >> > cellcol<-matrix("#000000", nrow=nrow(plotdata),ncol=ncol(plotdata))
> >> > cellcol[x<0.33]<-color.scale(x[x<0.33],c(1,0.8),c(0,0.8),0,
> na.color=NA)
> >> Error in cellcol[x < 0.33] <- color.scale(x[x < 0.33], c(1, 0.8), c(0,
> :
> >>   NAs are not allowed in subscripted assignments
> >> In addition: Warning messages:
> >> 1: In min(x) : no non-missing arguments to min; returning Inf
> >> 2: In max(x) : no non-missing arguments to max; returning -Inf
> >> ᐧ
> >>
> >> Postdoctoral Associate
> >> Department of Biology
> >> University of Maryland, College Park
> >>
> >> On Fri, Oct 9, 2015 at 11:48 AM, Sarah Goslee <sarah.goslee at gmail.com>
> >> wrote:
> >>
> >> > Hi Kumar,
> >> >
> >> > You're overthinking it:
> >> >
> >> > in RGB, colorspace, cs1 is red, cs2 is green, cs3 is blue.
> >> > So if cs1=c(1,1),cs2=(c(0,1),cs3=0 (or c(0,0) because of R's
> recycling)
> >> > the first color in the sequence is c(1, 0, 0) or red ##FF0000 and the
> >> > second color is c(1, 1, 0) #FFFF00 or yellow.
> >> >
> >> > Sarah
> >> >
> >> > On Fri, Oct 9, 2015 at 11:16 AM, Kumar Mainali <kpmainali at gmail.com>
> >> > wrote:
> >> > > Hi Jim,
> >> > >
> >> > > Thank you! Your color code does work. I still do not understand how
> >> > > red
> >> > to
> >> > > yellow in RGB space translates to cs1=c(1,1),cs2=(c(0,1),cs3=0. In
> >> > > other
> >> > > words, I have RGB values for red and yellow. How do I go from there
> to
> >> > the
> >> > > code you sent?
> >> > >
> >> > > Another question: some of my matrices have missing cells and I do
> not
> >> > want
> >> > > to assign any colors to the missing cells. The following code gives
> me
> >> > > error. I am trying to use the output (cellcol) to the
> >> > > function color2D.matplot.
> >> > >
> >> > >> cellcol<-matrix("#000000", nrow=nrow(plotdata),ncol=ncol(plotdata))
> >> > >> cellcol[x<0.33]<-color.scale(x[x<0.33],c(1,0.8),c(0,0.8),0,
> >> > >> na.color=NA)
> >> > > Error in cellcol[x < 0.33] <- color.scale(x[x < 0.33], c(1, 0.8),
> c(0,
> >> > > :
> >> > >   NAs are not allowed in subscripted assignments
> >> > > In addition: Warning messages:
> >> > > 1: In min(x) : no non-missing arguments to min; returning Inf
> >> > > 2: In max(x) : no non-missing arguments to max; returning -Inf
> >> > > ᐧ
> >> > >
> >> > > Postdoctoral Associate
> >> > > Department of Biology
> >> > > University of Maryland, College Park
> >> > >
> >> > > On Fri, Oct 9, 2015 at 7:24 AM, Jim Lemon <drjimlemon at gmail.com>
> >> > > wrote:
> >> > >
> >> > >> Hi Kumar,
> >> > >> The color.scale function translates numeric values into one or more
> >> > >> intervals of color by a linear transformation into the numeric
> values
> >> > that
> >> > >> specify colors. One of three color spaces (rgb, hcl and hsv) can be
> >> > >> specified, and the endpoints can be specified as
> "extremes=c(<minimum
> >> > >> color>,<maximum color>" or as three vectors of numbers. By default,
> >> > >> the
> >> > RGB
> >> > >> color space is used, so:
> >> > >>
> >> > >> # starts at RGB #FF0000 and finishes at RGB #FFFF00
> >> > >> red to yellow - extremes=c("red","yellow") OR
> >> > cs1=c(1,1),cs2=(c(0,1),cs3=0
> >> > >> # starts at RGB #FFFF00 and finishes at RGB #00FF00
> >> > >> yellow to green - extremes=c("yellow","green") OR
> >> > >> cs1=c(1,0),cs2=(c(1,1),cs3=0
> >> > >>
> >> > >> Obviously the shades of colors that you want may differ from the
> >> > >> above,
> >> > so
> >> > >> you have to play with the values to get the ones you want. In many
> >> > cases,
> >> > >> you will have to specify more than two numbers for the color specs
> to
> >> > get
> >> > >> the "in between" colors right, especially if the span of the colors
> >> > >> is
> >> > >> large.
> >> > >>
> >> > >> Jim
> >> > >>
> >> > >> On Fri, Oct 9, 2015 at 4:15 PM, Kumar Mainali <kpmainali at gmail.com
> >
> >> > wrote:
> >> > >>
> >> > >>> Hi Jim and others:
> >> > >>>
> >> > >>> I needed color code for some color gradients in color.scale
> >> > >>> function. I
> >> > >>> found that the following translates to green to yellow to
> >> > >>> red: c(0,1,1),c(1,1,0),0. How does this string translate to the
> >> > >>> color
> >> > >>> gradient? I would like to know the gradient code for red to
> yellow,
> >> > yellow
> >> > >>> to green and other ranges.
> >> > >>>
> >> > >>> Thanks,
> >> > >>> Kumar Mainali
> >> > >>>
> >> >
>

	[[alternative HTML version deleted]]



More information about the R-help mailing list