I wrote this function (borrowing heavily from an example from Longhow Lam) heatplot = function(x,y,z,bgcol="#777044",coltype='heat', ccex = 1.5, circles=TRUE, ...){ #browser() layout(matrix(c(1, 2, 3), nc=3), widths=c(7, 1, .5)) ## create the scatterplot withdifferent colors #ccols = heat.colors(length(z)) ColFormula1 = paste(coltype, '.colors(length(z))', sep='') ccols = eval(parse(text=ColFormula1)) bgfun=function(){ tmp = par("usr") rect(tmp[1], tmp[3], tmp[2], tmp[4], col=bgcol) ylimits=par()$usr[c(3,4)] abline(h=pretty(ylimits,10), lty=2, col='black') } scale = function(x){(x-min(x))/diff(range(x))} xname = deparse(substitute(x)) yname = deparse(substitute(y)) zname = deparse(substitute(z)) plot(x, y, pch=16, col=ccols[rank(z)], panel.first=bgfun(), xlab=xname,ylab=yname, cex=ccex ,...) if(circles){ points(x, y, cex=ccex) }
zlim = range(z, finite=TRUE) lvs = pretty(zlim, 20) plot.new() mtext(paste('legend for "', zname, '" values', sep=''), side=2) plot.window(xlim=c(0, 1), ylim=range(lvs), xaxs="i", yaxs="i") points(1,1,cex=5) #rect(0, lvs[-length(lvs)],1, lvs[-1], # col=heat.colors(length(lvs)-1)) ColFormula2 = paste(coltype, '.colors(length(lvs)-1)', sep='') rect(.1, lvs[-length(lvs)],1, lvs[-1], col=eval(parse(text=ColFormula2))) axis(4) layout(c(1)) } ## Examples: x = 1:100 y = sin(x/50) + rnorm(100)/20 z = sort(rnorm(100)) heatplot(x,y,z) heatplot(x,y,z, ccex=5) heatplot(x,y,z, ccex=5, circles=F) heatplot(x,y,z, ccex=5, circles=F, coltype='cm') heatplot(x,y,z, ccex=5, circles=F, coltype='topo', bgcol='lavender', main='Something Special') On Tue, Sep 6, 2011 at 2:14 PM, Jinrui Xu <jinru...@umich.edu> wrote: > Hi Sarah, > > To me, the heatmap function calculates "density value" for each grid of > the heatmap automatically from the input matrix. In my case, I already got > the "density value" as a vector, say Z. I want to plot a heat map with x and > y as is axsis and z values as the "density" of grid. I am not familiar with > R code, so I am writting to ask how to. Thanks! > > jinrui, > > > Quoting Sarah Goslee <sarah.gos...@gmail.com>: > > You mean like the examples in help("heatmap") ? >> >> On Tue, Sep 6, 2011 at 1:20 PM, Jinrui Xu <jinru...@umich.edu> wrote: >> >>> Hi everyone, >>> >>> I have three numerica vectors: x, y, z. I want to plot a heatmap or >>> surface >>> plot of z against x and y. Is there any package for this? If possible, >>> please drop me several lines of example code. Thanks! >>> >>> jinrui, >>> >>> >> -- >> Sarah Goslee >> http://www.**functionaldiversity.org <http://www.functionaldiversity.org> >> >> >> >> > > > -- > Ph.D Student, Bioinformatics Program > Center for Computational Medicine and Bioinformatics (CCMB) > The University of Michigan > 100 Washtenaw Avenue > Ann Arbor, MI 48109-2218 > > 1075 Natural Science Building > 830 North University Avenue > Ann Arbor, MI 48109-1048 > Tel (lab): 734-763-0514 > > http://www-personal.umich.edu/**~jinruixu/<http://www-personal.umich.edu/%7Ejinruixu/> > > > ______________________________**________________ > R-help@r-project.org mailing list > https://stat.ethz.ch/mailman/**listinfo/r-help<https://stat.ethz.ch/mailman/listinfo/r-help> > PLEASE do read the posting guide http://www.R-project.org/** > posting-guide.html <http://www.R-project.org/posting-guide.html> > and provide commented, minimal, self-contained, reproducible code. > [[alternative HTML version deleted]] ______________________________________________ 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.