[R] drawing a line indicating extent of each factored data series in multipanel lattice xyplot
Dan Kortschak
dan.kortschak at adelaide.edu.au
Thu Oct 22 00:08:03 CEST 2009
Hi,
Am am plotting aggregated frequency data (extracted from an RDBMS)
relating to DNA sequence features for each of the human chromosomes as
described in the table chromosomes below (the frequency data is in a
table 'hits' that has a value (or not) for each of a set of bins across
each chromosome).
I would like to mark the extent of the chromosome (according to the
length value in chromosome) with a line under the xyplot for each panel
(at the moment - not included in the xyplot statement below - I have
just added the length in bins to the panel strip, but this is not the
best solution for representing the data).
I have tried a couple of approaches to this (example below), but have
not got anything to work (the 100000 value refers to bin size).
Can anyone suggest an approach to accomplish this?
An additional though less significant question is how I can get the
panels to be in the order of the chromosomes as listed in the
chromosomes table rather than alphabetical order of their names.
thanks
Dan
> chromosomes
chromosome refSeq name length
1 0 NC_000001.9 Homo sapiens chromosome 1 247249719
2 1 NC_000002.10 Homo sapiens chromosome 2 242951149
3 2 NC_000003.10 Homo sapiens chromosome 3 199501827
4 3 NC_000004.10 Homo sapiens chromosome 4 191273063
5 4 NC_000005.8 Homo sapiens chromosome 5 180857866
6 5 NC_000006.10 Homo sapiens chromosome 6 170899992
7 6 NC_000007.12 Homo sapiens chromosome 7 158821424
8 7 NC_000008.9 Homo sapiens chromosome 8 146274826
9 8 NC_000009.10 Homo sapiens chromosome 9 140273252
10 9 NC_000010.9 Homo sapiens chromosome 10 135374737
11 10 NC_000011.8 Homo sapiens chromosome 11 134452384
12 11 NC_000012.10 Homo sapiens chromosome 12 132349534
13 12 NC_000013.9 Homo sapiens chromosome 13 114142980
14 13 NC_000014.7 Homo sapiens chromosome 14 106368585
15 14 NC_000015.8 Homo sapiens chromosome 15 100338915
16 15 NC_000016.8 Homo sapiens chromosome 16 88827254
17 16 NC_000017.9 Homo sapiens chromosome 17 78774742
18 17 NC_000018.8 Homo sapiens chromosome 18 76117153
19 18 NC_000019.8 Homo sapiens chromosome 19 63811651
20 19 NC_000020.9 Homo sapiens chromosome 20 62435964
21 20 NC_000021.7 Homo sapiens chromosome 21 46944323
22 21 NC_000022.9 Homo sapiens chromosome 22 49691432
23 22 NC_001807.4 Homo sapiens mitochondrion 16571
24 23 NC_000023.9 Homo sapiens chromosome X 154913754
25 24 NC_000024.8 Homo sapiens chromosome Y 57772954
xyplot(hits~bin|chromosomes$name[chromosome+1],
data=hits,
horizontal=FALSE,
origin=0,
lab=c(3,10),pch=20,cex=0.01,
layout=c(1,5,5),
strip=strip.custom(style=3,
bg="grey90",par.strip.text=list(cex=0.5)),
as.table=TRUE,
panel=function(x,y,...,length=chromosomes$length[chromosome+1])
{panel.xyplot(x,y,...); panel.lines(0,-100,length/100000,-100)}
)
More information about the R-help
mailing list