| pimage {autoimage} | R Documentation |
Display image for projected coordinates
Description
pimage plots an image for (potentially) projected locations.
A color scale is automatically provided with the image. The
function is essentially an extension of the
image function and the x and
y locations can be irregularly-spaced locations, sequences
of increasing values for locations on a regular grid, or matrices
(with dimensions matching those of z) for locations on an
irregular grid. Functionality for automatic projection is
provided.
Usage
pimage(
x,
y,
z,
legend = "horizontal",
proj = "none",
parameters,
orientation,
lratio = 0.2,
map = "none",
...
)
Arguments
x, y |
Locations of grid points at which the values in |
z |
A numeric or logical vector or matrix containing the values to be plotted (NAs are allowed). |
legend |
A character string indicating where the color scale
should be placed. The default is |
proj |
A character string indicating what projection should be
used for the included |
parameters |
A numeric vector specifying the values of the
|
orientation |
A vector |
lratio |
A numeric value indicating the ratio of the smaller
dimension of the legend scale to the width of the image. Default
is |
map |
The name of the map to draw on the image. Default is
|
... |
Additional arguments passed to the
|
Details
If x, y, and z are numeric vectors of the same
length, then the mba.surf function is used to
predict the response on a regular grid using multilevel
B-splines before constructing
the image. This interpolation can be customized by passing
interp.args through .... interp.args should
be a named list with component matching the non xyz
arguments of the mba.surf function.
If x are y are vectors of increasing values and
nrow(z) == length(x) and ncol(z) == length(y), then
an image on a regular grid is constructed.
If x, y and z are matrices with the same
dimensions, then an image for irregularly gridded data is
constructed.
When proj != "none", the mapproject
function is used to project the x and y coordinates.
In that case, proj must correspond to one of the choices for
the projection argument in the
mapproject function. Necessary arguments
for mapproject should be provided via the
parameters and orientation arguments. See Examples
and the mapproject function.
Valid options for legend are "none",
"horizontal", and "vertical". If legend =
"none", then no color scale is provided. If legend =
"horizontal", then a color scale is included under the image. If
legend = "vertical", then a color scale is added to the
right of the image.
Lines can be added to each image by passing the lines
argument through .... In that case, lines should be
a list with components x and y specifying the
locations to draw the lines. The appearance of the plotted lines
can be customized by passing a named list called lines.args
through .... The components of lines.args should match
the arguments of lines. See Examples.
Points can be added to each image by passing the points
argument through .... In that case, points should be
a list with components x and y specifying the
locations to draw the points. The appearance of the plotted points
can be customized by passing a named list called points.args
through .... The components of points.args should match
the components of points. See Examples.
Text can be added to each image by passing the text
argument through .... In that case, text should be
a list with components x and y specifying the
locations to draw the text, and labels, a component
specifying the actual text to write. The appearance of the plotted text
can be customized by passing a named list called text.args
through .... The components of text.args should match
the components of text. See Examples.
The legend scale can be modified by passing legend.axis.args
through .... The argument should be a named list
corresponding to the arguments of the axis
function. See Examples.
The image axes can be modified by passing axis.args through
.... The argument should be a named list corresponding to
the arguments of the axis function. The
exception to this is that arguments xat and yat can
be specified (instead of at) to specify the location of the
x and y ticks. If xat or yat are specified, then
this overrides the xaxt and yaxt arguments,
respectively. See the paxes function to
see how axis.args can be used.
The legend margin can be customized by passing legend.mar to
pimage through .... This should be a numeric vector
indicating the margins of the legend, identical to how
par("mar") is specified.
The various options of the labeling, axes, and legend are largely
independent. e.g., passing col.axis through ...
will not affect the axis unless it is passed as part of the
named list axis.args. However, one can set the various
par options prior to plotting to simultaneously
affect the appearance of multiple aspects of the plot. See
Examples. After plotting, reset.par() can be used to reset
the graphics device options to their default values.
See Also
Examples
# image plot for data on an irregular grid
pimage(lon, lat, tasmax[,,1], legend = "h", map = "world")
# same plot but with projection and vertical legend
pimage(lon, lat, tasmax[,,1], legend = "v", map = "world",
proj = "bonne", parameters = 45)
# different projection
pimage(lon, lat, tasmax[,,1], proj = "albers",
parameters = c(33, 45), map = "world")
reset.par() # reset graphics device
# image plot for non-gridded data
data(co, package = "gear")
pimage(co$longitude, co$latitude, co$Al)
# show observed locations on image,
# along with Colorado border, locations of Denver and Colorado
# Springs
data(copoly)
copoints <- list(x = co$lon, y = co$lat)
pimage(co$longitude, co$latitude, co$Al,
lines = copoly,
lines.args = list(lwd = 2, col = "grey"),
points = copoints,
points.args = list(pch = 21, bg = "white"),
text = list(x = c(-104.98, -104.80), y = c(39.74, 38.85),
labels = c("Denver", "Colorado Springs")),
text.args = list(col = "purple"),
xlim = c(-109.1, -102),
ylim = c(36.8, 41.1))
# image plot for data on irregular grid
# notice the poor axis labeling
data(narccap)
pimage(lon, lat, tasmax[,,1], proj = "bonne",
parameters = 45, map = "world")
# same plot but customize axis labeling
# need to extend horizontally-running axis lines
# farther to the west and east
# also need the vertically-running lines
# to run further north/sount
# will need manual adjusting depending on size
# of current device
pimage(lon, lat, tasmax[,,1], proj = "bonne",
parameters = 45, map = "world",
xaxp = c(-200, 0, 10), yaxp = c(-10, 80, 9))
# the same effect can be acheived by specifying axis.args
# we also modify the color and size of the axis labels
pimage(lon, lat, tasmax[,,1], proj = "bonne",
parameters = 45, map = "world",
axis.args = list(xat = seq(-200, 0, by = 20),
yat = seq(0, 70, by = 10),
col.axis = "blue",
cex.axis = 0.5))
# modify colors of legend, map, line type for grid lines
# and customize axis
pimage(lon, lat, tasmax[,,1],
legend = "v", proj = "bonne", parameters = 45,
map = "state",
paxes.args = list(lty = 3),
legend.axis.args = list(col = "blue", col.axis = "blue"),
col = fields::tim.colors(64),
xlab = "longitude",
ylab = "latitude",
main = "temperature (K)")
reset.par() # reset graphics device
# change many aspects of plot appearance using par
par(cex.axis = 0.5, cex.lab = 0.5, mgp = c(1.5, 0.5, 0),
mar = c(2.1, 2.1, 4.1, 0.2), col.axis = "orange",
col.main = "blue", family = "mono")
pimage(lon, lat, tasmax[,,1])
title("very customized plot")
reset.par()