imagep {oce} | R Documentation

## 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 supplied and, within each, the values must be finite and distinct; if values are out of order, they (and `z`) will be transformed to put them in order. ordered in a matching way). Mode 2. If `z` is provided but not `x` and `y`, then the latter are constructed to indicate the indices of the matrix, in contrast to the range of 0 to 1, as is the case for `image`. Mode 3. If `x` is a list, its components `x$x` and `x$y` are used for `x` and `y`, respectively. If the list has component `z` this is used for `z`. (NOTE: these arguments are meant to mimic those of `image`, which explains the same description here.) Mode 4. There are also some special cases, e.g. if `x` is a topographic object such as can be created with `read.topo` or `as.topo`, then longitude and latitude are used for axes, and topographic height is drawn.
`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 description here.)
`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 to clipping in an xy plot, with clipped data being ignored, which in an image means to be be coloured with `missingColor`.
`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). If `decimate=TRUE`, then decimation will be done in the horizontal or vertical direction (or both) if the length of the corresponding edge of the `z` matrix exceeds 800. (This also creates a warning message.) The decimation factor is computed as the integet just below the ratio of `z` dimension to 400. Thus, no decimation is done if the dimension is less than 800, but if the dimension s between 800 and 1199, only every second grid point is mapped to a pixel in the image. Case 3. If `decimate` is an integer, then that `z` is subsampled at `seq.int(1L, dim(z)[1], by=decimate)` (as is `x`), and the same is done for the `y` direction. Case 4. If `decimate` is a vector of two integers, the first is used for the first index of `z`, and the second is used for the second index.
`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 of the other contents of `colormap` are ignored, though.)
`labels` | Optional vector of labels for ticks on palette axis (must correspond with `at`).
`at` | Optional vector of positions for the `label`s.
`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 margin. If `drawPalette="space"`, then no palette is drawn, but space is put in the right-hand margin to occupy the region in which the palette would have been drawn. This last form is useful for producing stacked plots with uniform left and right margins, but with palettes on only some of the images.
`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 hours if the range is less than a day, etc.
`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.

### 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.)

### 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`.

### Author(s)

Dan Kelley and Clark Richards

### See Also

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

### Examples

    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)

[Package oce version 0.9-18 Index]