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]]
Presumably you need something like cellcol[x < 0.33 & !is.na(x)] just as the error message suggests. I don't think it's a color.scale issue. On Oct 9, 2015 3:27 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]]
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]] > > ______________________________________________ > R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code.[[alternative HTML version deleted]]
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 assignmentsx 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 >> > >>> >> >