User:Timothee Flutre/Notebook/Postdoc/2011/11/09
From OpenWetWare
Project name | Main project page Previous entry Next entry |
Entry title
links <- data.frame(id1=c("a","b","c"), id2=c("1","2","3"), stringsAsFactors=FALSE) mat <- matrix(runif(3*10), nrow=3) rownames(mat) <- c("b","c","a") new.rownames <- unlist(lapply(rownames(mat), function(i){links$id2[which(links$id1 == i)]})) rownames(mat) <- new.rownames Or it's maybe easier with the built-in match function: new.rownames <- links$id2[ match(rownames(mat), links$id1) ]
image(1:nrow(mat), 1:ncol(mat), is.na(mat), col=c("white","black"), main="Missing values", xlab="Genes", ylab="Samples")
S <- 3 # nb of subgroups V <- 7 # nb of observations z <- matrix(c(0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,1,0,0), nrow=V, ncol=S, byrow=TRUE) myheatmap <- function(z, out.file="") { def.par <- par(no.readonly=TRUE) par(mar=c(4,5,3,2), font=2, font.axis=2, font.lab=2, cex=1.5, lwd=2) if (out.file != "") pdf(out.file) layout(mat=cbind(1, 2), width=c(7,1)) # plot + legend mycol <- rev(heat.colors(4)) image(x=1:NCOL(z), y=1:NROW(z), z=t(z), xlim=0.5+c(0,NCOL(z)), ylim=0.5+c(0,NROW(z)), xlab="", ylab="Observations sorted by cluster", main="Custom heatmap", axes=FALSE, col=mycol) axis(1, 1:NCOL(z), labels=paste("subgroup", 1:NCOL(z)), tick=0) par(mar=c(0,0,0,0)) plot.new() legend("center", legend=sprintf("%.2f", seq(from=min(z), to=max(z), length.out=5)[-1]), fill=mycol, border=mycol, bty="n") if (out.file != "") dev.off() par(def.par) } myheatmap(mydata.sort) |