[R] add a color band

Jim Lemon jim at bitwrit.com.au
Fri Oct 25 23:43:22 CEST 2013


On 10/25/2013 11:16 PM, Alaios wrote:
> Hi Jim and thanks for help
>
> I will need some help to make
> -the legend visible (probably at the right side of the window)
> -split the legend at 0.1 steps -1,-0.9,-0.8.....1 and
> -assign a color heat.color(30). I have selected orange and reds
> -show me the way to change the size of legend if it would be needed
>
>
>
> par(mar=c(7,4,4,6))
> test<-matrix(data=runif(10000),nrow=100)
> color2D.matplot(test,axes="F",xlab="",ylab="",show.legend=FALSE)
> #,show.legend=TRUE
> axis(1,at=seq(1:nrow(test)),labels=seq(201,300)) #
> color.legend(11,6,11.8,9,seq(-1,1,length=10),rect.col=heat.colors(30),gradient="y")
>
Hi Alex,
You can do this in at least two ways. The first example uses the 
color.scale function to assign colors close to those of heat.colors. The 
second shows how to use heat.colors if you want that.

library(plotrix)
par(mar=c(7,4,4,6))
test<-matrix(data=runif(10000),nrow=100)
# this transforms the values of "test" into red->yellow
color2D.matplot(test,axes="F",xlab="",ylab="",main="color.scale",
  extremes=c("#FF0000","#FFFF00"),show.legend=FALSE)
axis(1,at=seq(1:nrow(test)),labels=seq(201,300))
# use par("usr") to find out the plot dimensions,
# then place the legend where you want it
color.legend(104,30,112,70,seq(-1,1,length=11),
  align="rb",rect.col=color.scale(1:30,1,c(0,1),0),gradient="y")
# now try it with heat.colors
test.cut<-matrix(as.numeric(cut(test,breaks=seq(0,1,length.out=30))),nrow=100)
color2D.matplot(test.cut,axes="F",xlab="",ylab="",main="heat.colors",
  cellcolors=heat.colors(30)[test.cut],show.legend=FALSE)
axis(1,at=seq(1:nrow(test)),labels=seq(201,300))
color.legend(104,30,112,70,seq(-1,1,length=11),
  align="rb",rect.col=heat.colors(30),gradient="y")

Jim



More information about the R-help mailing list