util.plot: Functions to Create and Modify Plots

util.plotR Documentation

Functions to Create and Modify Plots

Description

Initialize a new plot window using preset parameters, add an axis or title to a plot, generate labels for axes and subplots, add stability lines for water, get colors for a set of numeric values.

Usage

  thermo.plot.new(xlim, ylim, xlab, ylab, cex = par("cex"),
    mar = NULL, lwd = par("lwd"), side = c(1,2,3,4), 
    mgp = c(1.7, 0.3, 0), cex.axis = par("cex"), col = par("col"),
    yline = NULL, axs = "i", plot.box = TRUE, las = 1,
    xline = NULL, grid = "", col.grid = "gray", ...)
  thermo.axis(lab = NULL, side = 1:4, line = 1.5, cex = par("cex"),
    lwd = par("lwd"), col = par("col"), grid = "", col.grid = "gray",
    plot.line = FALSE)
  label.plot(x, xfrac = 0.07, yfrac = 0.93, paren = FALSE,
    italic = FALSE, ...)
  usrfig()
  label.figure(x, xfrac = 0.05, yfrac = 0.95, paren = FALSE,
    italic = FALSE, ...)
  water.lines(eout, which = c("oxidation","reduction"),
    lty = 2, lwd = 1, col = par("fg"), plot.it = TRUE)
  mtitle(main, line = 0, spacing = 1, ...)
  ZC.col(z)
  add.alpha(col, alpha)

Arguments

xlim

numeric, limits of the x-axis

ylim

numeric, limits of the y-axis

xlab

character, x-axis label

ylab

character, y-axis label

cex

numeric, character expansion factor for labels

mar

numeric, width (number of lines) of margins on each side of plot

lwd

numeric, line width

side

numeric, which sides of plot to draw axes

mgp

numeric, sizes of margins of plot

cex.axis

numeric, character expansion factor for names of axes

col

character, color

yline

numeric, margin line on which to plot y-axis name

axs

character, setting for axis limit calculation

plot.box

logical, draw a box around the plot?

las

numeric, style for axis labels

xline

numeric, margin line on which to plot x-axis name

grid

character, type of grid (‘⁠major⁠’, ‘⁠minor⁠’, or ‘⁠both⁠’)

col.grid

character, color of the grid lines

plot.line

logical, draw axis lines?

...

further arguments passed to par or mtext

lab

character, axis label

line

numeric, margin line on which to place axis label or plot title

x

character, label to place on plot

xfrac

numeric, fractional location on x-axis for placement of label

yfrac

numeric, fractional location on y-axis for placement of label

paren

logical, add parentheses around label text?

italic

logical, italicize label text?

eout

data frame, output of affinity, equilibrate, or diagram

which

character, which of oxidation/reduction lines to plot

lty

numeric, line type

plot.it

logical, plot the lines?

main

character, text for plot title

spacing

numeric, spacing between multiple lines

z

numeric, set of values

alpha

character, hexadecimal value of color transparency (alpha)

Details

thermo.plot.new sets parameters for a new plot, creates a new plot using plot.new, and adds the axes tick marks to the plot. Plot parameters (see par) including cex, mar, lwd, mgp and axs can be given, as well as a numeric vector in side identifying which sides of the plot receive tick marks. yline, if present, denotes the margin line (default par('mgp')[1]) where the y-axis name is plotted. thermo.axis is the function that actually adds the axes, including inward-pointing major and minor tick marks (often used for thermodynamic property diagrams).

Use grid to add a grid to the plot, corresponding to either the major ticks (solid lines), minor ticks (dashed lines), or both. The grid can be made by adding grid argument to diagram, or by calling thermo.axis after diagram (see example).

water.lines plots lines representing the oxidation and reduction stability limits of water on Eh/pe/\logfO2/\logfH2 vs pH/\T/\P diagrams. The x- and y-variables and their ranges are taken from eout. Values of \T, \P, pH, and \logaH2O, not corresponding to either axis, are also taken from eout. which controls which lines are drawn (‘⁠oxidation⁠’, ‘⁠reduction⁠’, or both (the default)). The value of swapped in the output reflects whether pH, \T, or \P is on the x-axis (TRUE) or y-axis (FALSE). NA is returned for any diagram for variables that can not be processed (including diagrams with more than 2 variables).

label.plot and label.figure add identifying text within the plot region and figure region. The value given for x is made into a label, optionally italicized and with parentheses (like (a)). The location of the label is controlled by xfrac and yfrac (the fractional coordinates of either the plot or figure region), and ... can include other parameters such as cex and adj that are passed to text.

usrfig returns the limits of the figure region in “user” coordinates (i.e. the limits of the plot region, from par("usr")). It is a supporting function for label.figure but is also useful for other circumstances where information must be added at a particular location in a figure.

mtitle can be used to add a multi-line title to a plot. It loops over each element of main and places it on a separate margin line using mtext. The spacing of the last (bottom) line from the edge of the plot is specified by line. This function exists to facilitate using expressions in multiline titles.

ZC.col uses colorspace) to generate colors from a diverging palette (red - light grey - blue) corresponding to the values in z. Red is associated with lower values of z. This function is intended to generate colors for distinguishing average oxidation state of carbon ZC, but any numeric values can be supplied.

add.alpha adds transparency to a color by appending the value of alpha to the hexadecimal representation of the color given in col.

See Also

diagram uses thermo.plot.new to set up a new plot, unless the argument tplot is set to FALSE in diagram.

Examples

basis(c("H2S", "H2O", "H+", "e-"))
species(c("HS-", "H2S", "HSO4-", "SO4-2"))
a <- affinity(pH = c(0, 12), Eh = c(-1, 1), T = 200)
opar <- par(mfrow = c(2, 2))
diagram(a, grid = "both")
title(main = 'diagram(a, grid = "both")')
diagram(a, grid = "major")
title(main = 'diagram(a, grid = "major")')
diagram(a, grid = "minor")
title(main = 'diagram(a, grid = "minor")')
diagram(a, fill = "terrain")
thermo.axis(grid = "major", col.grid = "slategray")
title(main = 'thermo.axis(grid = "major")')
par(thermo()$opar)
par(opar)

CHNOSZ documentation built on May 29, 2024, 3:30 a.m.