add.lmomco.axis: Add an lmomco Axis to a Plot

add.lmomco.axisR Documentation

Add an lmomco Axis to a Plot


This function provides special support for adding probability-like axes to an existing plot. The function supports a recurrence interval (RI) axis, normal probability axis (NPP), and standard normal variate (SNV) axis. The function is built around the interface model that standard normal transformation of the values for the respective axis controlled by this function are being plotted; this means that qnorm() should be wrapped on the values of nonexceedance probability. This is an ease oversight to make (see Examples section below and note use of qnorm(pp)).

The function provides a convenient interface for labeling and titling two axes, so adjustments to default margins might be desired. The pertinent control is achieved using the par() function, which might be of the form par(mgp=c(3,0.5,0), mar=c(5,4,4,3)) say for plotting the lmomco axis both on the left and right (see z.par2cdf for an example).


add.lmomco.axis(side=1, twoside=FALSE, twoside.suppress.labels=FALSE,
                side.type=c("NPP", "RI", "SNV"),
                otherside.type=c("NA", "RI", "SNV", "NPP"),
                alt.lab=NA, alt.other.lab=NA,,
                case=c("upper", "lower"),
                NPP.control=NULL, RI.control=NULL, SNV.control=NULL, ...)



The side of the plot (1=bottom, 2=left, 3=top, 4=right).


A logical triggering whether the tick marks are echoed on the opposite side. This value is forced to FALSE if otherside.type is not "NA".


A logical to turn off labeling on the opposite side. This is useful if only the ticks (major and minor) are desired.


The axis type for the primary side.


The optional axis type for the opposite side. The default is a literal not applicable.


A short-cut to change the axis label without having to specify a *.control argument and its label attribute. The label attribute of alt.lab is not NA is used instead of the defaults. This argument overrides behavior of the otherside.type labeling so use of alt.lab only makes sense if otherside.type is left as NA.


Similar to alt.lab but can house an alternative label (see Examples.

Convert nonexceedance probability to exceedance probability, which is a que for alt.other.lab and nonexceedance probabilities are changed by 1-F, but the real coordinates for plotting remain in the nonexceedance probability context.


The will switch between all upper case or mixed case for the default labels.


An optional R list used to influence the NPP axis.


An optional R list used to influence the RI axis.


An optional R list used to influence the SNV axis.


Additional arguments that are passed to the R function Axis.


No value is returned. This function is used for its side effects.


The NPP.control, RI.control, and SNV.control are R list structures that can be populated (and perhaps someday extended) to feed various settings into the respective axis types. In brief:

The NPP.control provides

label The title for the NPP axis---be careful with value of as.exceed.
probs A vector of nonexceedance probabilities F.
probs.lab A vector of nonexceedance probabilities F to label.
digits The digits for the R function format to enhance appearance.
line The line for the R function mtext to place label.
as.exceed A logical triggering S = 1 - F.

The RI.control provides

label The title for the RI axis.
Tyear A vector of T-year recurrence intervals.
line The line for the R function mtext to place label.

The SNV.control provides

label The title for the SNV axis.
begin The beginning “number of standard deviations”.
end The ending “number of standard deviations”.
by The step between begin and end.
line The line for the R function mtext to place label.

The user is responsible for appropriate construction of the control lists. Very little error trapping is made to keep the code base tight. The defaults when the function definition are likely good for many types of applications. Lastly, the manipulation of the mgp parameter in the example is to show how to handle the offset between the numbers and the ticks when the ticks are moved to pointing inward, which is opposite of the default in R.


W.H. Asquith

See Also

prob2T, T2prob, add.log.axis


par(mgp=c(3,0.5,0)) # going to tick to the inside, change some parameters
X <- sort(rnorm(65)); pp <- pp(X) # generate synthetic data
plot(qnorm(pp), X, xaxt="n", xlab="", ylab="QUANTILE", xlim=c(-2,3))
add.lmomco.axis(las=2, tcl=0.5, side.type="RI", otherside.type="NPP")
par(mgp=c(3,1,0)) # restore defaults

## Not run: 
opts <- options(scipen=6); par(mgp=c(3,0.5,0))
X <- sort(rexp(65, rate=.0001))*100; pp <- pp(X) # generate synthetic data
plot(qnorm(pp), X, yaxt="n", xaxt="n", xlab="", ylab="", log="y")
add.log.axis(side=2,    tcl=+0.8*abs(par()$tcl),         two.sided=TRUE)
add.log.axis(logs=c(1), tcl=-0.5*abs(par()$tcl), side=2, two.sided=TRUE)
add.log.axis(logs=c(1), tcl=+1.3*abs(par()$tcl), side=2, two.sided=TRUE)
add.log.axis(logs=1:8, side=2, make.labs=TRUE, las=1, label="QUANTILE")
add.lmomco.axis(las=2, tcl=0.5, side.type="NPP",, case="lower")
par(mgp=c(3,1,0)) # restore defaults
## End(Not run)

lmomco documentation built on Aug. 27, 2022, 1:06 a.m.