plotStacked: Stacked plot

View source: R/plotStacked.R

plotStackedR Documentation

Stacked plot

Description

plotStacked makes a stacked plot where each y series is plotted on top of each other using filled polygons.

Usage

plotStacked(
  x,
  y,
  order.method = "as.is",
  ylab = "",
  xlab = "",
  border = NULL,
  lwd = 1,
  col = rainbow(length(y[1, ])),
  ylim = NULL,
  ...
)

Arguments

x

A vector of values

y

A matrix of data series (columns) corresponding to x

order.method

Method of ordering y plotting order. One of the following: c("as.is", "max", "first"). "as.is" - plot in order of y column. "max" - plot in order of when each y series reaches maximum value. "first" - plot in order of when each y series first value > 0.

ylab

y-axis labels

xlab

x-axis labels

border

Border colors for polygons corresponding to y columns (will recycle) (see ?polygon for details)

lwd

Border line width for polygons corresponding to y columns (will recycle)

col

Fill colors for polygons corresponding to y columns (will recycle).

ylim

y-axis limits. If ylim=NULL, defaults to c(0, 1.2*max(apply(y,1,sum).

...

Other plot arguments

Examples

#Create data
set.seed(1)
m <- 500
n <- 30
x <- seq(m)
y <- matrix(0, nrow=m, ncol=n)
colnames(y) <- seq(n)
for(i in seq(ncol(y))){
 mu <- runif(1, min=0.25*m, max=0.75*m)
 SD <- runif(1, min=5, max=20)
 TMP <- rnorm(1000, mean=mu, sd=SD)
 HIST <- hist(TMP, breaks=c(0,x), plot=FALSE)
 fit <- smooth.spline(HIST$counts ~ HIST$mids)
 y[,i] <- fit$y
}
y <- replace(y, y<0.01, 0)

#Ex.1 : Color by max value)
pal <- colorRampPalette(c(rgb(0.85,0.85,1), rgb(0.2,0.2,0.7)))
BREAKS <- pretty(apply(y,2,max),8)
LEVS <- levels(cut(1, breaks=BREAKS))
COLS <- pal(length(BREAKS )-1)
z <- val2col(apply(y,2,max), col=COLS)

#Create stacked plot (plot order = "as.is")
plotStacked(x,y, xlim=c(100, 400), ylim=c(0, 1.2*max(apply(y,1,sum), na.rm=TRUE)), 
yaxs="i", col=z, border="white", lwd=0.5)

#Create stacked plot (plot order = "max")
plotStacked(x,y, xlim=c(100, 400), ylim=c(0, 1.2*max(apply(y,1,sum), na.rm=TRUE)), 
order.method="max", yaxs="i", col=z, border="white", lwd=0.5)

#Ex. 2 : Color by first value
ord <- order(apply(y, 2, function(r) min(which(r>0))))
y2 <- y[, ord]
pal <- colorRampPalette(c("blue", "cyan", "yellow", "red"))
z <- pal(ncol(y2))

#Create stacked plot (plot order = "as.is")
plotStacked(x,y2, xlim=c(100, 400), ylim=c(0, 1.2*max(apply(y2,1,sum), na.rm=TRUE)), 
yaxs="i", col=z, border=1, lwd=0.25)

#Create stacked plot (plot order = "max")
plotStacked(x,y2, xlim=c(100, 400), ylim=c(0, 1.2*max(apply(y2,1,sum), na.rm=TRUE)), 
order.method="max", yaxs="i", col=z, border=1, lwd=0.25)


marchtaylor/sinkr documentation built on July 4, 2022, 5:48 p.m.