Plot a List of Things

Share:

Description

Plots a list of things

Usage

1
2
3
4
5
6
7
8
9
  ## S3 method for class 'anylist'
plot(x, ..., main, arrange=TRUE,
   nrows=NULL, ncols=NULL, main.panel=NULL,
   mar.panel=c(2,1,1,2), hsep=0, vsep=0,
   panel.begin=NULL, panel.end=NULL, panel.args=NULL,
   panel.begin.args=NULL, panel.end.args=NULL, 
   plotcommand="plot",
   adorn.left=NULL, adorn.right=NULL, adorn.top=NULL, adorn.bottom=NULL,
   adorn.size=0.2, equal.scales=FALSE, halign=FALSE, valign=FALSE)

Arguments

x

An object of the class "anylist". Essentially a list of objects.

...

Arguments passed to plot when generating each plot panel.

main

Overall heading for the plot.

arrange

Logical flag indicating whether to plot the objects side-by-side on a single page (arrange=TRUE) or plot them individually in a succession of frames (arrange=FALSE).

nrows,ncols

Optional. The number of rows/columns in the plot layout (assuming arrange=TRUE). You can specify either or both of these numbers.

main.panel

Optional. A character string, or a vector of character strings, giving the headings for each of the objects.

mar.panel

Size of the margins outside each plot panel. A numeric vector of length 4 giving the bottom, left, top, and right margins in that order. (Alternatively the vector may have length 1 or 2 and will be replicated to length 4). See the section on Spacing between plots.

hsep,vsep

Additional horizontal and vertical separation between plot panels, expressed in the same units as mar.panel.

panel.begin,panel.end

Optional. Functions that will be executed before and after each panel is plotted. See Details.

panel.args

Optional. Function that determines different plot arguments for different panels. See Details.

panel.begin.args

Optional. List of additional arguments for panel.begin when it is a function.

panel.end.args

Optional. List of additional arguments for panel.end when it is a function.

plotcommand

Optional. Character string containing the name of the command that should be executed to plot each panel.

adorn.left,adorn.right,adorn.top,adorn.bottom

Optional. Functions (with no arguments) that will be executed to generate additional plots at the margins (left, right, top and/or bottom, respectively) of the array of plots.

adorn.size

Relative width (as a fraction of the other panels' widths) of the margin plots.

equal.scales

Logical value indicating whether the components should be plotted at (approximately) the same physical scale.

halign,valign

Logical values indicating whether panels in a column should be aligned to the same x coordinate system (halign=TRUE) and whether panels in a row should be aligned to the same y coordinate system (valign=TRUE). These are applicable only if equal.scales=TRUE.

Details

This is the plot method for the class "anylist".

An object of class "anylist" represents a list of objects intended to be treated in the same way. This is the method for plot.

In the spatstat package, various functions produce an object of class "anylist", essentially a list of objects of the same kind. These objects can be plotted in a nice arrangement using plot.anylist. See the Examples.

The argument panel.args determines extra graphics parameters for each panel. It should be a function that will be called as panel.args(i) where i is the panel number. Its return value should be a list of graphics parameters that can be passed to the relevant plot method. These parameters override any parameters specified in the ... arguments.

The arguments panel.begin and panel.end determine graphics that will be plotted before and after each panel is plotted. They may be objects of some class that can be plotted with the generic plot command. Alternatively they may be functions that will be called as panel.begin(i, y, main=main.panel[i]) and panel.end(i, y, add=TRUE) where i is the panel number and y = x[[i]].

If all entries of x are pixel images, the function image.listof is called to control the plotting. The arguments equal.ribbon and col can be used to determine the colour map or maps applied.

If equal.scales=FALSE (the default), then the plot panels will have equal height on the plot device (unless there is only one column of panels, in which case they will have equal width on the plot device). This means that the objects are plotted at different physical scales, by default.

If equal.scales=TRUE, then the dimensions of the plot panels on the plot device will be proportional to the spatial dimensions of the corresponding components of x. This means that the objects will be plotted at approximately equal physical scales. If these objects have very different spatial sizes, the plot command could fail (when it tries to plot the smaller objects at a tiny scale), with an error message that the figure margins are too large.

The objects will be plotted at exactly equal physical scales, and exactly aligned on the device, under the following conditions:

  • every component of x is a spatial object whose position can be shifted by shift;

  • panel.begin and panel.end are either NULL or they are spatial objects whose position can be shifted by shift;

  • adorn.left, adorn.right, adorn.top and adorn.bottom are all NULL.

Another special case is when every component of x is an object of class "fv" representing a function. If equal.scales=TRUE then all these functions will be plotted with the same axis scales (i.e. with the same xlim and the same ylim).

Value

Null.

Spacing between plots

The spacing between individual plots is controlled by the parameters mar.panel, hsep and vsep.

If equal.scales=FALSE, the plot panels are logically separate plots. The margins for each panel are determined by the argument mar.panel which becomes the graphics parameter mar described in the help file for par. One unit of mar corresponds to one line of text in the margin. If hsep or vsep are present, mar.panel is augmented by c(vsep, hsep, vsep, hsep)/2.

If equal.scales=TRUE, all the plot panels are drawn in the same coordinate system which represents a physical scale. The unit of measurement for mar.panel[1,3] is one-sixth of the greatest height of any object plotted in the same row of panels, and the unit for mar.panel[2,4] is one-sixth of the greatest width of any object plotted in the same column of panels. If hsep or vsep are present, they are interpreted in the same units as mar.panel[2] and mar.panel[1] respectively.

Error messages

If the error message ‘Figure margins too large’ occurs, this generally means that one of the objects had a much smaller physical scale than the others. Ensure that equal.scales=FALSE and increase the values of mar.panel.

Author(s)

\adrian \rolf

and \ege

See Also

contour.listof, image.listof, density.splitppp

Examples

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
 trichotomy <- list(regular=cells,
                    random=japanesepines,
                    clustered=redwood)
 K <- lapply(trichotomy, Kest)
 K <- as.anylist(K)
 plot(K, main="")

# list of 3D point patterns
 ape1 <- osteo[osteo$shortid==4, "pts", drop=TRUE]
 class(ape1)
 plot(ape1, main.panel="", mar.panel=0.1, hsep=0.7, vsep=1,
      cex=1.5, pch=21, bg='white')

Want to suggest features or report bugs for rdrr.io? Use the GitHub issue tracker.