geom_chevron {ggbio} | R Documentation |
Break normal intervals stroed in GRanges
object and show them
as chevron, useful for showing model or splice summary.
## S4 method for signature 'GRanges' geom_chevron(data, ..., xlab, ylab, main, offset = 0.1, facets = NULL, stat = c("stepping", "identity"), chevron.height.rescale = c(0.1, 0.8), group.selfish = TRUE)
data |
A GRanges object. |
... |
Extra parameters passed to autoplot function. |
xlab |
Label for x |
ylab |
Label for y |
main |
Title for plot. |
offset |
A nunmeric value or characters. If it's numeric value, indicate how
much you want the chevron to wiggle, usually the rectangle for
drawing |
facets |
faceting formula to use. |
stat |
character vector specifying statistics to use. "stepping" with
randomly assigned stepping levels as y varialbe. "identity" allow
users to specify |
chevron.height.rescale |
A numeric vector of length 2. When the offset parameters is a character which is one of the data columns, this parameter rescale the offset. |
group.selfish |
Passed to |
To draw a normal GRanges as Chevron, we need to provide a special geom for
this purpose. Chevron is popular in gene viewer or genomoe browser,
when they try to show isoforms or gene model.geom_chevron
,
just like any other geom_*
function in ggplot2, you can pass
aes() to it to use height of chevron or width
of chevron to show statistics summary.
A 'Layer'.
Tengfei Yin
set.seed(1)
N <- 100
require(GenomicRanges)
## ======================================================================
## simmulated GRanges
## ======================================================================
gr <- GRanges(seqnames =
sample(c("chr1", "chr2", "chr3"),
size = N, replace = TRUE),
IRanges(
start = sample(1:300, size = N, replace = TRUE),
width = sample(70:75, size = N,replace = TRUE)),
strand = sample(c("+", "-", "*"), size = N,
replace = TRUE),
value = rnorm(N, 10, 3), score = rnorm(N, 100, 30),
sample = sample(c("Normal", "Tumor"),
size = N, replace = TRUE),
pair = sample(letters, size = N,
replace = TRUE))
## ======================================================================
## default
##
## ======================================================================
ggplot(gr) + geom_chevron()
## or
ggplot() + geom_chevron(gr)
## ======================================================================
## facetting and aesthetics
## ======================================================================
ggplot(gr) + geom_chevron(facets = sample ~ seqnames, aes(color = strand))
## ======================================================================
## stat:identity
## ======================================================================
ggplot(gr) + geom_chevron(stat = "identity", aes(y = value))
## ======================================================================
## stat:stepping
## ======================================================================
ggplot(gr) + geom_chevron(stat = "stepping", aes(group = pair))
## ======================================================================
## group.selfish controls when
## ======================================================================
ggplot(gr) + geom_chevron(stat = "stepping", aes(group = pair), group.selfish = FALSE,
xlab = "xlab", ylab = "ylab", main = "main")
p <- qplot(x = mpg, y = cyl, data = mtcars)
## ======================================================================
## offset
## ======================================================================
gr2 <- GRanges("chr1", IRanges(c(1, 10, 20), width = 5))
gr2.p <- gaps(gr2)
## resize to connect them
gr2.p <- resize(gr2.p, fix = "center", width = width(gr2.p)+2)
ggplot(gr2) + geom_rect() + geom_chevron(gr2.p)
## Scale for 'y' is already present. Adding another scale for 'y', which will
## replace the existing scale.
## notice the rectangle height is 0.8
## offset = 0 just like a line
ggplot(gr2) + geom_rect() + geom_chevron(gr2.p, offset = 0)
## Scale for 'y' is already present. Adding another scale for 'y', which will
## replace the existing scale.
## equal height
ggplot(gr2) + geom_rect() + geom_chevron(gr2.p, offset = 0.4)
## Scale for 'y' is already present. Adding another scale for 'y', which will
## replace the existing scale.
## ======================================================================
## chevron.height
## ======================================================================
values(gr2.p)$score <- c(100, 200)
ggplot(gr2) + geom_rect() + geom_chevron(gr2.p, offset = "score")
## Scale for 'y' is already present. Adding another scale for 'y', which will
## replace the existing scale.
## chevron.height
ggplot(gr2) + geom_rect() + geom_chevron(gr2.p, offset = "score",
chevron.height.rescale = c(0.4, 10))
## Scale for 'y' is already present. Adding another scale for 'y', which will
## replace the existing scale.