[BioC] Customizing gplots heatmap.2 - color range for heatmap and legend for RowSideColors
Wong, Chao-Jen
cwon2 at fhcrc.org
Wed Nov 2 01:11:33 CET 2011
Hi, Kurinji
1. *adjusting color range on heatmap.2*
You can use the mighty "breaks" argument to symmetrically bin your data, ranged from 0 to 1, into color. For instance,
bk <- seq(0, 1, by=0.025)
heatmap.2(z.ma, breaks=bk, col=greenred, blah, blah)
It should map values around 0.5 to black color.
2. *obtaining a legend for RowSideColors*
First, convert your x$USCS to a factor:
f <- factor(x$UCSC)
library(RColorBrewer)
mycol <- brewer.pal(6, "Set1") ## if you only have 6 levels
heatmap.2(z.ma, ..., RowSideColors=mycol[f])
The legend can be recreated by
legend(x="topleft", legend=levels(f), col=mycol[factor(levels(f))], pch=15)
If you want to superimpose the legend on the plot generated by heatmap.2(), you will need to adjust the x, y argument of legend() to position the legend to a more plausible place.
Cheers,
Chao-Jen
----- Original Message -----
From: "Kurinji Pandiyan" <kurinji.pandiyan at gmail.com>
To: bioconductor at r-project.org
Sent: Friday, October 28, 2011 8:54:47 AM
Subject: [BioC] Customizing gplots heatmap.2 - color range for heatmap and legend for RowSideColors
Dear All,
I am using package gplots - heatmap.2 - function to plot some data. I would
really appreciate your help customizing my heatmap in terms of -
1. *adjusting color range on heatmap.2* - I am using color "greenred" and
would like this to consistently range from 0-1. Because one of my datasets
does not have values ranging all the way to one, the color scale has been
adjusted from 0-0.5, with red being 0.5. This is confusing as it is not
consistent with all the other heatmaps where red indicates a value of 1. I
would like to change the range of the color scale to always be the same,
regardless of dataset - always 0 being green and red being 1, with a
gradation of black in between (which greenred does by default anyway)
2. *obtaining a legend for RowSideColors* - I am also trying to use a
specific column of my dataframe, which has 6 different levels of annotation,
to plot RowSideColors - I was able to do this:
x <http://hct.delta.body.ma/> <- y[,c(3,9:10)] # 3 is the column with the
levels of interest - for coloring - and is labeled "USCS"
z <http://hct.delta.ma/>.ma <- as.matrix(y[,9:10])
mycol <- c("red", "green", "blue", "purple", "yellow", "black")
heatmap.2(z.ma <http://hct.delta.ma/>, col=greenred, scale = "none",
trace="none",keysize = 1.5, main = list("Accessibility Plot", cex = 1.5),
margins = c(5,5), cexCol = 1, Rowv = "NULL", RowSideColors=mycol[as.integer(
x <http://hct.delta.body.ma/>$USCS)])
This worked well - only issue is, I am not sure how it picked which color to
which value. I was eventually able to figure it out with a small sample set
but it will be nice to not have to figure it out and to just use code to
produce a legend with color and level name. Please let me know how to
produce a legend with the colors used for RowSideColors.
I would greatly appreciate someone's input.
Thanks,
Kurinji
Graduate Student
[[alternative HTML version deleted]]
_______________________________________________
Bioconductor mailing list
Bioconductor at r-project.org
https://stat.ethz.ch/mailman/listinfo/bioconductor
Search the archives: http://news.gmane.org/gmane.science.biology.informatics.conductor
--
Chao-Jen Wong
Program in Computational Biology
Division of Public Health Sciences
Fred Hutchinson Cancer Research Center
1100 Fairview Avenue N., M1-B514
PO Box 19024
Seattle, WA 98109
206.667.4485
cwon2 at fhcrc.org
More information about the Bioconductor
mailing list