[BioC] ggplots2 - heatmap2 colour labels

Paolo Kunderfranco paolo.kunderfranco at gmail.com
Tue Oct 2 17:46:38 CEST 2012


Great!
Thanks a lot is now working fine!
cheers,
paolo


2012/10/2 James W. MacDonald <jmacdon at uw.edu>:
> Hi Paolo,
>
> First, I am assuming here that your subject line is incorrect, and that you
> are talking about the heatmap.2() function in gplots, not something that is
> in ggplot2.
>
>
> On 10/2/2012 8:56 AM, Paolo Kunderfranco wrote:
>>
>> Dear All,
>> I would like to add colours to my heatmap, for instance I have a set
>> of genes, some are up-regulated and some are down-regulated
>>
>> example
>> this is my data.matrix
>>>
>>> x
>>
>> Pfdn5         11.73  1.000
>> Aqp1           9.25  1.000
>> Lims2         11.15  1.000
>> Chrac1         1.00 13.990
>> Sdhb           1.00  7.460
>> Phpt1          8.28  1.000
>> Dhrs7c        10.93  1.000
>> Mrpl30         1.00  7.690
>> Mrps35        11.15  1.000
>> Mlf1          18.50  1.000
>> Atp5h          9.29  1.000
>>
>>
>> heatmap.2(x, Colv=F, Rowv=F,cexCol=0.5, main="test",
>> cexRow=0.3,scale="row", col=greenred(75), key=F, trace="none")
>>
>>
>>
>> I would like to plot the first 3 labels in red and the rest in blue,
>> is it possible with heatmap.2 function?
>
>
> Not easily. You would have to modify the code to heatmap.2() to accept the
> two color arguments, as well as calling axis() twice. The relevant part of
> heatmap.2() looks like this:
>
>  if (!invalid(na.color) & any(is.na(x))) {
>         mmat <- ifelse(is.na(x), 1, NA)
>         image(1:nc, 1:nr, mmat, axes = FALSE, xlab = "", ylab = "",
>             col = na.color, add = TRUE)
>     }
>     axis(1, 1:nc, labels = labCol, las = 2, line = -0.5, tick = 0,
>         cex.axis = cexCol)
>     if (!is.null(xlab))
>         mtext(xlab, side = 1, line = margins[1] - 1.25)
>     axis(4, iy, labels = labRow, las = 2, line = -0.5, tick = 0,
>         cex.axis = cexRow)
>
> Where the two calls to axis() put the horizontal and vertical axis labels
> on. In particular, the last axis() call does the row names.
>
> The problem here is that you can only pass a single color for the axis
> labels, so you will have to call axis(4, <otherstuff>) twice to do the two
> different colors. So you will have to change that last call to do just the
> first 3, with the col.axis argument set to "red", and then the remaining
> labels with the col.axis argument set to "blue". Something like (untested):
>
> axis(4, iy[1:3], labRow[1:3], las=2, line=-0.5, tick=0,cex.axis=cexRow,
> col.axis="red")
> axis(4, iy[-c(1:3)], labRow[-c(1:3)], las=2, line=-0.5,
> tick=0,cex.axis=cexRow, col.axis="blue")
>
> I'll leave the rest of it up to you. You might need to google things like 'R
> modify code' or some such if you don't know how to extract and modify
> existing code in R.
>
> Best,
>
> Jim
>
>
>> Thanks,
>> Paolo
>>
>> _______________________________________________
>> 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
>
>
> --
> James W. MacDonald, M.S.
> Biostatistician
> University of Washington
> Environmental and Occupational Health Sciences
> 4225 Roosevelt Way NE, # 100
> Seattle WA 98105-6099
>



More information about the Bioconductor mailing list