Hi Jim,

Thanks for the suggestion I will try it as I do find color2D.matplot  
is a bit more versatile.

I have however, since pasting my message, carried on playing and  
found out that that doing the following actually works as well:

 > fg = read.table("flagenes.txt", row.names=1)
 > fg1=as.matrix(fg)
 > palette=c 
("white","black","red","orange","cyan","green3","yellow","blue")
 > image(fg1, col=palette)

The only annoying thing there is that image seems to turn my data  
upside down. As yet I have not figured out how to get a legend, get  
the right types f axis labels or get the plot shown to be the correct  
orientation. This just means when I get it into Canvas for my  
presentation all I have to do is rotate it a few times and fiddle  
with it a bit more than necessary.

All the best

Phil (wragbag)

On 7 Nov 2007, at 12:13, Jim Lemon wrote:

> wragbag wrote:
>> I am a true R novice aonly using it for this function ;)
>> I am trying to use color2D.matplot to form a image of my data  
>> using the
>> following conditions
>> color2D.matplot(fi1, c(dr), c(dg), c(db), nslices=7, ylab='Species',
>> xlab="gene", show.legend=TRUE) where fi1 is my matrix.
>> I have a matrix with 36 columns and 130 rows. most entries are 1  
>> or 0 and I
>> am trying to get this function to plot these as either 0 = white  
>> or 1 =
>> black. This is fine but one column contains entries between 0 and  
>> 7. I would
>> entries between 2 and 7 to be different colors (as this is what I  
>> am trying
>> to show although I also need to see the black and white areas)  
>> using the
>> following:
>>> dr = c(1,0,1,0,0)
>>> dg = c(1,0,0,1,0)
>>> db = c(1,0,0,0,1)
>> I can get some color to work but I cannot get them all as if I but  
>> in a c()
>> range equalling 0-7 (i.e. one color for each number I get the  
>> following. I
>> cannot figure out from the documentation why it will not let me do  
>> what I
>> want :(
>> Error in rescale(x[segindex], redrange[c(seg, seg + 1)]) :    
>> rescale: can't rescale a constant vector!
> Hi wragbag,
> This is a situation that I had not envisaged in the design of  
> color2D.matplot. However, I think there is a workaround.
>
> fi1<-matrix(c(0,1),nrow=130,ncol=36)
> fi1[sample(1:3000,100)]<-sample(2:7,100,TRUE)
> color2D.matplot(fi1,
>  c(1,0,0.2,0.3,0.4,0.5,0.6,0.7),
>  c(1,0,0.2,0.3,0.4,0.5,0.6,0.7),
>  c(1,0,0.9,0.8,0.7,0.6,0.5,0.4),
>  ylab="Species",xlab="gene")
> color.legend(0,-15,7,-10,0:7,
>  color.scale(0:7,c(1,0,0.2,0.3,0.4,0.5,0.6,0.7),
>  c(1,0,0.2,0.3,0.4,0.5,0.6,0.7),
>  c(1,0,0.9,0.8,0.7,0.6,0.5,0.4))
>
> Because of the unusual way of specifying the color ranges to
> get white, black and then six colors, the rescale function
> throws an error on the constant vectors it is asked to rescale.
> I may have to think whether I can make it deal with this
> situation more gracefully. However, the above will get your
> plot and you can specify whatever colors you wish for the last
> six values in each primary color range. (What I have done is to
> specify as many color ranges as there are values).
>
> Jim

******************

Dr. Phillip Aldridge PhD.
Lecturer
Institute for Cell and Molecular Biosciences
The Medical School
Newcastle University
Framlington Place
Newcastle upon Tyne
NE2 4HH

Tel: +44-191-222-7704
Fax: +44-191-222-7424
email: p.d.aldridge@ncl.ac.uk

webpage: http://www.ncl.ac.uk/camb/staff/profile/p.d.aldridge

*******************



	[[alternative HTML version deleted]]

