Learn R Programming

oce (version 0.9-18)

imagep: Plot an Image with a Color Palette

Description

Plot an image with a colour palette, in a way that does not conflict with par(mfrow) or layout. To plot just a palette, e.g. to get an x-y plot with points coloured according to a palette, use drawPalette and then draw the main diagram.

Usage

imagep(x, y, z, xlim, ylim, zlim, zclip = FALSE, flipy = FALSE, xlab = "",
  ylab = "", zlab = "", zlabPosition = c("top", "side"),
  decimate = TRUE, breaks, col, colormap, labels = NULL, at = NULL,
  drawContours = FALSE, drawPalette = TRUE, drawTriangles = FALSE,
  tformat, drawTimeRange = getOption("oceDrawTimeRange"),
  filledContour = FALSE, missingColor = NULL, mgp = getOption("oceMgp"),
  mar, mai.palette, xaxs = "i", yaxs = "i", cex = par("cex"), adorn,
  axes = TRUE, main = "", axisPalette, debug = getOption("oceDebug"), ...)

Arguments

x, y
These have different meanings in different modes of operation. Mode 1. One mode has them meaning the locations of coordinates along which values matrix z are defined. In this case, both x and y must be suppl
z
A matrix containing the values to be plotted (NAs are allowed). Note that x can be used instead of z for convenience. (NOTE: these arguments are meant to mimic those of image, which explains the same descript
xlim, ylim
Limits on x and y axes.
zlim
Either a pair of numbers giving the limits for the colour scale, or "histogram" to have a flattened histogram (i.e. to maximally increase contrast throughout the domain.)
zclip
Logical, indicating whether to clip the colours to those corresponding to zlim. This only works if zlim is provided. Clipped regions will be coloured with missingColor. Thus, clipping an image is somewhat analogous t
flipy
Logical, with TRUE indicating that the image should be flipped top to bottom (e.g. to produce a profile image for a downward-looking acoustic-doppler profile).
xlab, ylab, zlab
Names for x axis, y axis, and the image values.
zlabPosition
String indicating where to put the label for the z axis, either at the top-right of the main image, or on the side, in the axis for the palette.
decimate
Controls whether the image will be decimated before plotting, in three possible cases. Case 1. If decimate=FALSE then every grid cell in the matrix will be represented by a pixel in the image. Case 2 (the default).
breaks
The z values for breaks in the colour scheme. If this is of length 1, the value indicates the desired number of breaks, which is supplied to pretty, in determining clean break points.
col
Either a vector of colours corresponding to the breaks, of length 1 plus the number of breaks, or a function specifying colours, e.g. oce.colorsJet for a rainbow.
colormap
A colour map as created by colormap. If provided, then colormap$breaks and colormap$col take precedence over the present arguments breaks and col. (All
labels
Optional vector of labels for ticks on palette axis (must correspond with at).
at
Optional vector of positions for the labels.
drawContours
Logical value indicating whether to draw contours on the image, and palette, at the colour breaks. Images with a great deal of high-wavenumber variation look poor with contours.
drawPalette
Indication of the type of palette to draw, if any. If drawPalette=TRUE, a palette is drawn at the right-hand side of the main image. If drawPalette=FALSE, no palette is drawn, and the right-hand side of the plot has a thin marg
drawTriangles
Logical value indicating whether to draw triangles on the top and bottom of the palette. This is passed to drawPalette.
tformat
Optional argument passed to oce.plot.ts, for plot types that call that function. (See strptime for the format used.)
drawTimeRange
Logical, only used if the x axis is a time. If TRUE, then an indication of the time range of the data (not the axis) is indicated at the top-left margin of the graph. This is useful because the labels on time axes only indicate
filledContour
Boolean value indicating whether to use filled contours to plot the image.
missingColor
A colour to be used to indicate missing data, or NULL to avoid making the indication.
mgp
A 3-element numerical vector to use for par(mgp), and also for par(mar), computed from this. The default is tighter than the R default, in order to use more space for the data and less for the axes.
mar
A 4-element Value to be used with par("mar"). If not given, a reasonable value is calculated based on whether xlab and ylab are empty strings.
mai.palette
Palette margin corrections (in inches), added to the mai value used for the palette. Use with care.
xaxs
Character indicating whether image should extend to edge of x axis (with value "i") or not; see par("xaxs").
yaxs
As xaxs but for y axis.
cex
Size of labels on axes and palette; see par("cex").
adorn
Optional expression to be performed immediately after drawing the data panel.
axes
Logical, set TRUE to get axes on the main image.
main
Title for plot.
axisPalette
Optional replacement function for axis(), passed to drawPalette.
debug
A flag that turns on debugging. Set to 1 to get a moderate amount of debugging information, or to 2 to get more.
...
Optional arguments passed to plotting functions.

Value

  • A list is silently returned, containing xat and yat, values that can be used by oce.grid to add a grid to the plot.

Note for RStudio/OSX users

On OSX computers, some versions of RStudio produce a margin-size error when imagep is called. RStudio version 0.99.451 (released late in 2015) did not have this problem, but it appeared in version 0.99.878 (released early 2016). The issue was reported to RStudio in January 2016. The workaround is simple: open a new (and separate) plotting window with dev.new.

Details

By default, creates an image with a colour palette to the right. The effect is similar to filled.contour except that with imagep it is possible to set the layout outside the function, which enables the creation of plots with many image-palette panels. Note that the contour lines may not coincide with the colour transitions, in the case of coarse images.

Note that this does not use layout or any of the other screen splitting methods. It simply manipulates margins, and draws two plots together. This lets users employ their favourite layout schemes.

The palette is drawn before the image, so that further drawing can be done on the image if desired, if the user prefers not to use the adorn argument.

NOTE: imagep is an analogue of image, and from that it borrows a the convention that the number of rows in the matrix corresponds to to x axis, not the y axis. (Actually, image permits the length of x to match either nrow(z) or 1+nrow(z), but here only the first is permitted.)

See Also

This uses drawPalette, and is used by plot.adp, plot.landsat, and other image-generating functions.

Examples

Run this code
library(oce)

# 1. simplest use
imagep(volcano)

# 2. something oceanographic (internal-wave speed)
h <- seq(0, 50, length.out=100)
drho <- seq(1, 3, length.out=200)
speed <- outer(h, drho, function(drho, h) sqrt(9.8 * drho * h / 1024))
imagep(h, drho, speed, xlab="Equivalent depth [m]",
ylab=expression(paste(Delta*rho, "[kg/m^3]")),
zlab="Internal-wave speed [m/s]")

# 3. fancy labelling on atan() function
x <- seq(0, 1, 0.01)
y <- seq(0, 1, 0.01)
angle <- outer(x,y,function(x,y) atan2(y,x))
imagep(x, y, angle, filledContour=TRUE, breaks=c(0, pi/4, pi/2),
       col=c("lightgray", "darkgray"),
       at=c(0, pi/4, pi/2),
       labels=c(0, expression(pi/4), expression(pi/2)))

# 4. a colormap case
data(topoWorld)
cm <- colormap(name="gmt_globe")
imagep(topoWorld, colormap=cm)

Run the code above in your browser using DataLab