Image plot for cells that are irregular quadrilaterals.
Creates an image using polygon filling based on a grid of irregular quadrilaterals. This function is useful for a regular grid that has been transformed to another nonlinear or rotated coordinate system. This situation comes up in lon-lat grids created under different map projections. Unlike the usual image format this function requires the grid to be specified as two matrices x and y that given the grid x and y coordinates explicitly for every grid point.
poly.image(x, y, z, col = tim.colors(64), breaks, transparent.color = "white", midpoint = FALSE, zlim = range(z, na.rm = TRUE), xlim = range(x), ylim = range(y), add = FALSE, border=NA,lwd.poly=1,...) poly.image.regrid(x)
x |
A matrix of the x locations of the grid. |
y |
A matrix of the y locations of the grid. |
z |
Values for each grid cell. Can either be the value at the grid points or interpreted as the midpoint of the grid cell. |
col |
Color scale for plotting. |
breaks |
Numerical breaks to match to the colors. If missing breaks are
equally spaced on the range |
transparent.color |
Color to plot cells that are outside the range specified in the function call. |
midpoint |
Only relevant if the dimensions of x,y, and z are the same. If TRUE the z values will be averaged and then used as the cell midpoints. If FALSE the x/y grid will be expanded and shifted to represent grid cells corners. (See poly.image.regrid.) |
zlim |
Plotting limits for z. |
xlim |
Plotting limits for x. |
ylim |
Plotting limits for y. |
add |
If TRUE will add image onto current plot. |
border |
Color of the edges of the quadrilaterals, the default is no color. |
lwd.poly |
Line width for the mesh surface. i.e. the outlines of the quadrilateral facets. This might have to be set smaller than one if rounded corners on the facets are visible. |
... |
If add is FALSE, additional graphical arguments that will be supplied to the plot function. |
This function is straightforward except in the case when the dimensions of x,y, and z are equal. In this case the relationship of the values to the grid cells is ambigious and the switch midpoint gives two possible solutions. The z values at 4 neighboring grid cells can be averaged to estimate a new value interpreted to be at the center of the grid. This is done when midpoint is TRUE. Alternatively the full set of z values can be retained by redefining the grid. This is accomplisehd by finding the midpoints of x and y grid points and adding two outside rows and cols to complete the grid. The new result is a new grid that is is (M+1)X (N+1) if z is MXN. These new grid points define cells that contain each of the original grid points as their midpoints. Of course the advantage of this alternative is that the values of z are preserved in the image plot; a feature that may be important for some uses.
The function image.plot uses this function internally when image information is passed in this format and can add a legend. In most cases just use image.plot.
The function poly.image.regrid
does a simple averaging and
extrapolation of the grid locations to shift from midpoints to
corners. In the interior grid corners are found by the average of the
4 closest midpoints. For the edges the corners are just extrapolated
based on the separation of nieghboring grid cells.
Doug Nychka
image.plot
data(RCMexample) set.panel( 1,2) par(pty="s") # plot with grid modified poly.image( RCMexample$x, RCMexample$y, RCMexample$z[,,1]) # use midpoints of z poly.image( RCMexample$x, RCMexample$y, RCMexample$z[,,1],midpoint=TRUE) set.panel() # an example with quantile breaks brk<- quantile( RCMexample$z[,,1], c( 0, .9,.95,.99,1.0) ) poly.image( RCMexample$x, RCMexample$y, RCMexample$z[,,1], breaks=brk, col= rainbow(4)) # images are very similar. set.panel() # Regridding of x and y l1<- poly.image.regrid( RCMexample$x) l2<- poly.image.regrid( RCMexample$y) # test that this works i<- 1:10 plot( l1[i,i], l2[i,i]) points( RCMexample$x[i,i], RCMexample$y[i,i],col="red")
Please choose more modern alternatives, such as Google Chrome or Mozilla Firefox.