Dear all,
I like to use heatmap.2 from the gplots library package to
automatically
plot heatmaps from microarray data.
Things work fine so far, but two problems remain:
1. Depending on the amount of data to be displayed, the fontsize of
the
labels changes dynamically (as it should) and with that, the
margin-space required to print the labels changes also (leading to
truncated labels sometimes).
This can be set manually with
margin <- c(x,y);
for both x and y axis labels margins.
Is there an easy way to compute the required margin size dynamically
from -say- the lenght of the longest label-string?
2. Plotting with heatmap.2 in the X11 device gives a plot, in which
all
the coloured rectangles are drawn without visible separating border
between them.
When plotting as "pngalpha" with the bitmap device, you can see
separating bright borderlines, which -due to the antialiasing- are
only
partly visible (i.e. some lines are there, some have been removed by
the
antialiasing).
Is there any option to remove this borders when plotting with bitmap
and
"pngalpha"?
I have tried with
sepwidth = c(0.0,0.0),
sepcolor = "black",
but this does not have any visible effect.
Thanks in advance.
--
Bye,
Marc Saric
On 3/9/06 6:41 AM, "Marc Saric" <marc.saric at="" gmx.de=""> wrote:
> Dear all,
>
> I like to use heatmap.2 from the gplots library package to
automatically
> plot heatmaps from microarray data.
>
> Things work fine so far, but two problems remain:
>
> 1. Depending on the amount of data to be displayed, the fontsize of
the
> labels changes dynamically (as it should) and with that, the
> margin-space required to print the labels changes also (leading to
> truncated labels sometimes).
>
> This can be set manually with
>
> margin <- c(x,y);
>
> for both x and y axis labels margins.
>
> Is there an easy way to compute the required margin size dynamically
> from -say- the lenght of the longest label-string?
Not sure here. I imagine it is possible, but I don't know how to do
it.
> 2. Plotting with heatmap.2 in the X11 device gives a plot, in which
all
> the coloured rectangles are drawn without visible separating border
> between them.
>
> When plotting as "pngalpha" with the bitmap device, you can see
> separating bright borderlines, which -due to the antialiasing- are
only
> partly visible (i.e. some lines are there, some have been removed by
the
> antialiasing).
>
> Is there any option to remove this borders when plotting with bitmap
and
> "pngalpha"?
>
> I have tried with
>
> sepwidth = c(0.0,0.0),
> sepcolor = "black",
>
> but this does not have any visible effect.
If I remember, heatmap.2 doesn't actually put any separators between
the
columns/rows by default. (You can glance at the code to check.) This
happens on some viewers with some formats, but the view that you see
with
the X11 device is the one that heatmap.2 is actually drawing, I think,
so
there isn't a way to eliminate this effect with those other devices.
Try
pdf or ps devices and see what you get.
Sean
> -----Original Message-----
> From: bioconductor-bounces at stat.math.ethz.ch
[mailto:bioconductor-
> bounces at stat.math.ethz.ch] On Behalf Of Marc Saric
> Sent: Thursday, March 09, 2006 6:41 AM
> To: bioconductor at stat.math.ethz.ch
> Subject: [BioC] Fine tuning heatmap.2 graphics
>
> Dear all,
>
> I like to use heatmap.2 from the gplots library package to
automatically
> plot heatmaps from microarray data.
>
> Things work fine so far, but two problems remain:
>
> 1. Depending on the amount of data to be displayed, the fontsize of
the
> labels changes dynamically (as it should) and with that, the
> margin-space required to print the labels changes also (leading to
> truncated labels sometimes).
>
> This can be set manually with
>
> margin <- c(x,y);
>
> for both x and y axis labels margins.
>
> Is there an easy way to compute the required margin size dynamically
> from -say- the lenght of the longest label-string?
I have used the following code for setting margins for heatmap() (not
heatmap2()):
margin.factor <- 12
marg <- max(5, min(20, ceiling(margin.factor*max.nchar/ncol(expr3))))
margins <- c(marg, marg)
where max.nchar is the max length of column label and expr3 is the
matrix being displayed. It worked okay but not completely
satisfactorily.
BTW, what is the advantage of heatmap2() over heatmap()?
Does anyone know of a heatmap()-like function that can add multiple
rows of
column colors (each row corresponding, say, to various phenotypic
parameters)
such as can be done with dChip?
Thanks.
-Ben
Wittner, Ben, Ph.D. wrote:
> I have used the following code for setting margins for heatmap()
(not
> heatmap2()):
>
> margin.factor <- 12
> marg <- max(5, min(20,
ceiling(margin.factor*max.nchar/ncol(expr3))))
> margins <- c(marg, marg)
Thanks, will try.
> where max.nchar is the max length of column label and expr3 is the
> matrix being displayed. It worked okay but not completely
satisfactorily.
> BTW, what is the advantage of heatmap2() over heatmap()?
Mostly that you get more options to tweak the graphics, like a color-
key
and some more color-schemas out of the box.
> Does anyone know of a heatmap()-like function that can add multiple
rows of
> column colors (each row corresponding, say, to various phenotypic
parameters)
> such as can be done with dChip?
Not that I would know.
--
Bye,
Marc Saric
Hi,
In a similar vein, is there a simple (?) way of manually setting the
height/width of the heatmap rows/columns per se, not just change font
size scaling of labels/legends, i.e. for non-symmetrical matrices?
Thanks for any suggestions,
Cheers,
al
> -----Original Message-----
> From: bioconductor-bounces at stat.math.ethz.ch
> [mailto:bioconductor-bounces at stat.math.ethz.ch] On Behalf Of
> Marc Saric
> Sent: 09 March 2006 15:19
> To: Wittner, Ben, Ph.D.
> Cc: bioconductor at stat.math.ethz.ch
> Subject: Re: [BioC] Fine tuning heatmap.2 graphics
>
>
> Wittner, Ben, Ph.D. wrote:
>
> > I have used the following code for setting margins for
> heatmap() (not
> > heatmap2()):
> >
> > margin.factor <- 12
> > marg <- max(5, min(20,
> ceiling(margin.factor*max.nchar/ncol(expr3))))
> > margins <- c(marg, marg)
>
> Thanks, will try.
>
>
> > where max.nchar is the max length of column label and expr3 is the
> > matrix being displayed. It worked okay but not completely
> > satisfactorily.
>
> > BTW, what is the advantage of heatmap2() over heatmap()?
>
> Mostly that you get more options to tweak the graphics, like
> a color-key and some more color-schemas out of the box.
>
>
> > Does anyone know of a heatmap()-like function that can add
multiple
> > rows of column colors (each row corresponding, say, to various
> > phenotypic parameters) such as can be done with dChip?
>
> Not that I would know.
>
>
> --
> Bye,
>
> Marc Saric
>
> _______________________________________________
> Bioconductor mailing list
> Bioconductor at stat.math.ethz.ch
> https://stat.ethz.ch/mailman/listinfo/biocondu> ctor
>
On 3/9/06 10:30 AM, "Al Ivens" <alicat at="" sanger.ac.uk=""> wrote:
> Hi,
>
> In a similar vein, is there a simple (?) way of manually setting the
> height/width of the heatmap rows/columns per se, not just change
font
> size scaling of labels/legends, i.e. for non-symmetrical matrices?
Are you using heatmap or heatmap.2? Heatmap.2 defaults to not forcing
a
square image. Heatmap, though, defaults to a square image. Is this
to what
you are referring?
Sean
Hi Sean,
Thanks for this.
> Are you using heatmap or heatmap.2? Heatmap.2 defaults to
> not forcing a square image. Heatmap, though, defaults to a
> square image. Is this to what you are referring?
Sort of! Most of the "problems" stem from saving the plot out to a
png,
but it seems one can get around this by specifying "height" as an
appropriate direct multiple of the matrix rows, and letting "width"
sort
itself out.
Probably a fairly esoteric query, but is there a way of controlling
the
aspect ratio of the cells that make up the map, i.e. do they HAVE to
be
rectangles?
Cheers and thanks,
a
>
> Sean
>
>
On 3/10/06 8:58 AM, "Al Ivens" <alicat at="" sanger.ac.uk=""> wrote:
> Hi Sean,
>
> Thanks for this.
>
>> Are you using heatmap or heatmap.2? Heatmap.2 defaults to
>> not forcing a square image. Heatmap, though, defaults to a
>> square image. Is this to what you are referring?
>
> Sort of! Most of the "problems" stem from saving the plot out to a
png,
> but it seems one can get around this by specifying "height" as an
> appropriate direct multiple of the matrix rows, and letting "width"
sort
> itself out.
>
> Probably a fairly esoteric query, but is there a way of controlling
the
> aspect ratio of the cells that make up the map, i.e. do they HAVE to
be
> rectangles?
You could probably make a wrapper that includes a calculation of the
approximate size of the resulting image (assuming that you want
approximately square cells) given the number of genes/samples, do the
appropriate png() or pdf() command with the calculated height/width
specified, then do the heatmap[.2]() command.
Sean
> BTW, what is the advantage of heatmap2() over heatmap()?
heatmap.2 can show a color key (use key=True) and density information
histograms.
The color key is probably not so important if you are letting the
heatmap function scale your data - see also option scale="none"
> Does anyone know of a heatmap()-like function that can add multiple
rows of
> column colors (each row corresponding, say, to various phenotypic
parameters)
> such as can be done with dChip?
No, but its a question I had been wondering about too.
Peter
> BTW, what is the advantage of heatmap2() over heatmap()?
heatmap.2 can show a color key (use key=True) and density information
histograms.
The color key is probably not so important if you are letting the
heatmap function scale your data - see also option scale="none"
> Does anyone know of a heatmap()-like function that can add multiple
rows of
> column colors (each row corresponding, say, to various phenotypic
parameters)
> such as can be done with dChip?
No, but its a question I had been wondering about too.
Peter