Become an expert in R — Interactive courses, Cheat Sheets, certificates and more!
Get Started for Free

stackpoly

Display the columns of a matrix or data frame as stacked polygons


Description

Plot one or more columns of numeric values as the top edges of polygons instead of lines.

Usage

stackpoly(x,y=NULL,main="",xlab="",ylab="",xat=NA,xaxlab=NA,
  xlim=NA,ylim=NA,lty=1,lwd=1,border=NA,col=NULL,staxx=FALSE,stack=FALSE,
  axis2=TRUE,axis4=TRUE,padj=0,...)

Arguments

x

A numeric data frame or matrix with the x values. If y is NULL, these will become the y values and the x positions will be the integers from 1 to dim(x)[1].

y

The y values.

main

The title for the plot.

xlab,ylab

x and y axis labels for the plot.

xat

Where to put the optional xaxlabs.

xaxlab

Optional labels for the x positions.

xlim

Optional x limits.

ylim

Optional y limits.

lty

Line type for the polygon borders.

lwd

Line width for the polygon borders.

border

Color for the polygon borders.

col

Color to fill the polygons. If NULL, rainbow will be called to generate the colors. If NA, the polygons will not be filled.

staxx

Whether to call staxlab to stagger the x axis labels.

stack

Whether to stack the successive values on top of each other.

axis2

Whether to display the left ordinate on the plot.

axis4

Whether to display the right ordinate on the plot.

padj

Vertical justfication of the x axis labels, defaulting to "top". Can be a vector with an element for each label.

...

Additional arguments passed to plot.

Details

stackpoly is similar to a line plot with the area under the lines filled with color(s). Ideally, each successive set of y values is greater than the values in the previous set so that the polygons form a rising series of crests. If stack is TRUE, this is not a problem unless some values of x are negative.

If x or y is a vector, not a matrix or list, the values will be displayed as a "waterfall plot".

The options for axis2 and axis4 can be used to produce panel plots. See the last example.

Value

nil

Author(s)

Jim Lemon and Thomas Petzoldt (waterfall plot option) - thanks to Phil Novack-Gottshall for the mismatched x and y fix

See Also

Examples

testx<-matrix(abs(rnorm(100)),nrow=10)
 stackpoly(matrix(cumsum(testx),nrow=10),main="Test Stackpoly I",
  xaxlab=c("One","Two","Three","Four","Five",
  "Six","Seven","Eight","Nine","Ten"),border="black",staxx=TRUE)
 stackpoly(testx,main="Test Stackpoly II",
  xaxlab=c("One","Two","Three","Four","Five",
  "Six","Seven","Eight","Nine","Ten"),border="black",
  staxx=TRUE,stack=TRUE)
 layout(matrix(1:2,nrow=1))
 oldmar<-par(mar=c(5,4,4,0))
 stackpoly(rev(sort(testx-mean(testx))),
  main="Waterfall Plot (x-mean)",xat=seq(10,90,by=10),
  xlab="Index",ylab="Value",lwd=3,col="green",border="black",
  axis4=FALSE)
 ylim<-par("usr")[3:4]
 par(mar=c(5,0,4,4))
 stackpoly(rev(sort((testx-mean(testx))/sd(as.vector(testx)))),
  ylim=ylim,main="Waterfall Plot ((x-mean)/sd)",xat=seq(10,90,by=10),
  xlab="Index",lwd=3,col="lightblue",border="black",axis2=FALSE)
 par(oldmar)

plotrix

Various Plotting Functions

v3.8-1
GPL (>= 2)
Authors
Jim Lemon, Ben Bolker, Sander Oom, Eduardo Klein, Barry Rowlingson, Hadley Wickham, Anupam Tyagi, Olivier Eterradossi, Gabor Grothendieck, Michael Toews, John Kane, Rolf Turner, Carl Witthoft, Julian Stander, Thomas Petzoldt, Remko Duursma, Elisa Biancotto, Ofir Levy, Christophe Dutang, Peter Solymos, Robby Engelmann, Michael Hecker, Felix Steinbeck, Hans Borchers, Henrik Singmann, Ted Toal, Derek Ogle, Darshan Baral, Ulrike Groemping, Bill Venables
Initial release
2021-01-21

We don't support your browser anymore

Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.