Re: [R] Plotting Character Variable

From: Marc Schwartz (via MN) <>
Date: Fri 08 Jul 2005 - 02:37:17 EST

On Thu, 2005-07-07 at 11:47 -0400, wrote:
> Any ideas about the following problem:
> I have a matrix (A) that looks like this:
> gene_names values
> hsa-mir-124 0.3
> hsa-mir-234 0.1
> hsa-mir-344 0.4
> hsa-mir-333 0.7
> ..... .......
> (This is a 2 by 22283 matrix: quite large)

To split hairs, it would be a 22283 by 2 object in R's [row, column] approach to indexing.

I am also presuming that "A" is a data frame, since you seem to have two different data types above, with gene_names being a factor?

> I would like to plot the values, but output the gene_names as the plotting
> symbol. I have tried regular x,y plots, but since the gene_names are quite
> large and there are 22283 of them, it's impossible to fit them on the x-axis.
> Basically, can I plot the above matrix
> plot(gene_names, value) where the gene_names are used as the plotting symbol.
> thank you,


I would defer to those with more experience in plotting genetic data, but from a practical standpoint, it seems to me to be highly problematic to plot >20,000 data points with labels and have them be human readable without an STM....unless you have _very_ wide paper on a large format plotter.... ;-)

That being said, one approach is to rotate the x axis labels vertically, to make more room, while using points for the plotting symbols:

# Adjust bottom margin to make room for vertical labels par(mar = c(7, 4, 4, 2))

plot(1:nrow(A), A$values, xaxt = "n", ann = FALSE, las = 2)

# use 'las = 3' to rotate the labels
axis(1, at = 1:nrow(A),

     labels = as.character(A$gene_names), las = 3)

You might want to review some of the tools available at the Bioconductor site to see if there are specialized plotting functions for this type of data:

HTH, Marc Schwartz mailing list PLEASE do read the posting guide! Received on Fri Jul 08 02:44:16 2005

This archive was generated by hypermail 2.1.8 : Fri 03 Mar 2006 - 03:33:20 EST