Learn R Programming

spatstat.geom (version 3.7-0)

persp.ppp: Perspective Plot of Marked Point Pattern

Description

For a spatial point pattern with numeric marks, generate a perspective plot in which each data point is shown as a vertical spike, with height proportional to the mark value.

Usage

# S3 method for ppp
persp(x, ..., main, type=c("l", "b"),
            grid = TRUE, ngrid = 10,
            col.grid = "grey", col.base = "white",
            win.args=list(),
            spike.args = list(), neg.args = list(),
            point.args=list(), 
            which.marks = 1,
            zlab = NULL, zlim = NULL, zadjust = 1,
            show.window=TRUE,
            legend=TRUE, legendpos="bottomleft",
            leg.args=list(lwd=4), leg.col=c("black", "orange"))

Arguments

Value

(Invisibly) the perspective transformation matrix.

Details

The function persp is generic. This is the method for spatial point patterns (objects of class "ppp"). The argument x must be a point pattern with numeric marks, or with a data frame of marks.

A perspective view will be plotted. The eye position is determined by the arguments theta and phi passed to persp.default.

First the horizontal plane is drawn in perspective view, using a faint grid of lines to help suggest the perspective. Next the observation window of x is placed on the horizontal plane and its edges are drawn in perspective view. Finally for each data point in x, a vertical spike is erected at the spatial location of the data point, with height equal to the mark value of the point.

The horizontal plane is effectively transparent, by default. If the argument col.base is a single colour value, the horizontal plane will be painted in this colour. If col.base is a pixel image, it will be rendered as a colour image shown in perspective view on the horizontal plane:

  • If valuesAreColours=TRUE is specified, the pixel values of col.base will be interpreted directly as colour values.

  • Otherwise, the argument colmap controls the mapping from pixel values of col.base to physical colours.

After the horizontal plane has been coloured, the observation window Window(x) will be drawn on the horizontal plane (unless show.window=FALSE). By default, only the edges of the window will be drawn, as black line segments. The style of plotting the window can be modified using win.args. The colour of the line segments is controlled by win.args$border. If win.args$col is given, the window will be filled in the specified colour, overwriting any previous colours. See the Examples.

If any mark values are negative, the corresponding spikes will penetrate below the horizontal plane. They can be drawn in a different colour by specifying neg.args as shown in the examples. These would be obscured if col.base is an opaque colour other than white, or if col.base is a pixel image. A transparent colour for col.base can be used if it is supported by the graphics device.

Like all spatial plots in the spatstat family, persp.ppp does not independently rescale the \(x\) and \(y\) coordinates. A long narrow window will be represented as a long narrow window in the perspective view. To override this and allow the coordinates to be independently rescaled, use the argument scale=TRUE which will be passed to persp.default.

Examples

Run this code
   persp(longleaf, theta=-30, phi=35, spike.args=list(lwd=3), zadjust=1.5,
         zlab="diameter")

   # negative mark values
   X <- longleaf
   marks(X) <- marks(X) - 20
   persp(X, theta=80, phi=35, neg.args=list(col="red"),
         spike.args=list(lwd=3), zadjust=1.2)

   # irregular window
   Australia <- Window(austates)
   Y <- runifrect(70, Frame(Australia))[Australia]
   marks(Y) <- runif(npoints(Y))
   persp(Y, theta=30, phi=20, col.base="lightblue",
         win.args=list(col="pink", border=NA),
         spike.args=list(lwd=2), zadjust=1.5, zlab="")

   persp(Y, type="b",
         theta=30, phi=20, col.base="lightblue",
         win.args=list(col="pink", border=NA),
         spike.args=list(lty=3), point.args=list(col="blue"), zadjust=1.5)

Run the code above in your browser using DataLab