Dear All,
I am using the plotrix library to plot some matrices.
I have a problem: some of my data are outliers, hence using a linear
color scale does not work very well (you would see too many cells having
a similar, indistinguishable color). See the code snipped at the end of
the email.
Plotting the logarithm of the data gets the job done, but my problem is
that I would like to write in every cell the value of the corresponding
entry of the original matrix, not is logarithm.
Does anyone know how to get this done? Or the other way around: leave
the data as is, but use a color log scale.
Many thanks

Lorenzo





library(plotrix)


set.seed(1234)

myseq <- abs(rnorm(25))

myseq[20] <- 100 #introduce outlier!

A <- matrix(myseq, ncol=5,nrow=5)



#nasty looking figure

pdf("test_color_scale.pdf")
oldpar<-par( mar = c(4.5,5, 2, 1) + 0.1,
 cex.axis=1.4,cex.lab=1.6,cex.main=1.6)
color2D.matplot(A,main="Title",c(0.2,1),c(0.2,0.5),c(0,0),
 xlab = "",
 ylab="",
show.legend=TRUE,
 show.values=1,vcol="black",vcex=1, axes=FALSE)
## axis(1,at=c(0.5,1.5,2.5,3.5,4.5),labels=prefix_vec_short)
## axis(2,at=rev(c(0.5,1.5,2.5,3.5,4.5)),labels=prefix_vec_short)
box()
par(oldpar) 
dev.off()


#this looks better, but in each cell I would like to see the same
#numbers as before.

pdf("test_color_scale_log.pdf")
oldpar<-par( mar = c(4.5,5, 2, 1) + 0.1,
 cex.axis=1.4,cex.lab=1.6,cex.main=1.6)
color2D.matplot(log(A),main="Title",c(0.2,1),c(0.2,0.5),c(0,0),
 xlab = "",
 ylab="",
show.legend=TRUE,
 show.values=1,vcol="black",vcex=1, axes=FALSE)
## axis(1,at=c(0.5,1.5,2.5,3.5,4.5),labels=prefix_vec_short)
## axis(2,at=rev(c(0.5,1.5,2.5,3.5,4.5)),labels=prefix_vec_short)
box()
par(oldpar) 
dev.off()

______________________________________________
R-help@r-project.org mailing list
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.

Reply via email to