lattice (version 0.20-45)

B_08_splom: Scatter Plot Matrices


Draw Conditional Scatter Plot Matrices and Parallel Coordinate Plots


splom(x, data, …)
parallelplot(x, data, …)

# S3 method for formula splom(x, data, auto.key = FALSE, aspect = 1, between = list(x = 0.5, y = 0.5), panel = lattice.getOption("panel.splom"), prepanel, scales, strip, groups, xlab, xlim, ylab = NULL, ylim, superpanel = lattice.getOption("panel.pairs"), pscales = 5, varnames = NULL, drop.unused.levels, …, lattice.options = NULL, default.scales, default.prepanel = lattice.getOption("prepanel.default.splom"), subset = TRUE) # S3 method for formula parallelplot(x, data, auto.key = FALSE, aspect = "fill", between = list(x = 0.5, y = 0.5), panel = lattice.getOption("panel.parallel"), prepanel, scales, strip, groups, xlab = NULL, xlim, ylab = NULL, ylim, varnames = NULL, horizontal.axis = TRUE, drop.unused.levels, …, lattice.options = NULL, default.scales, default.prepanel = lattice.getOption("prepanel.default.parallel"), subset = TRUE)

# S3 method for data.frame splom(x, data = NULL, …, groups = NULL, subset = TRUE) # S3 method for matrix splom(x, data = NULL, …, groups = NULL, subset = TRUE)

# S3 method for matrix parallelplot(x, data = NULL, …, groups = NULL, subset = TRUE) # S3 method for data.frame parallelplot(x, data = NULL, …, groups = NULL, subset = TRUE)



The object on which method dispatch is carried out.

For the "formula" method, a formula describing the structure of the plot, which should be of the form ~ x | g1 * g2 * …, where x is a data frame or matrix. Each of g1,g2,… must be either factors or shingles. The conditioning variables g1, g2, … may be omitted.

For the data.frame methods, a data frame.


For the formula methods, an optional data frame in which variables in the formula (as well as groups and subset, if any) are to be evaluated.


aspect ratio of each panel (and subpanel), square by default for splom.


to avoid confusion between panels and subpanels, the default is to show the panels of a splom plot with space between them.


For parallelplot, this has the usual interpretation, i.e., a function that creates the display within each panel.

For splom, the terminology is slightly complicated. The role played by the panel function in most other high-level functions is played here by the superpanel function, which is responsible for the display for each conditional data subset. panel is simply an argument to the default superpanel function panel.pairs, and is passed on to it unchanged. It is used there to create each pairwise display. See panel.pairs for more useful options.


function that sets up the splom display, by default as a scatterplot matrix.


a numeric value or a list, meant to be a less functional substitute for the scales argument in xyplot etc. This argument is passed to the superpanel function, and is handled by the default superpanel function panel.pairs. The help page for the latter documents this argument in more detail.


A character or expression vector or giving names to be used for the variables in x. By default, the column names of x.


logical indicating whether the parallel axes should be laid out horizontally (TRUE) or vertically (FALSE).

auto.key, prepanel, scales, strip, groups, xlab, xlim, ylab, ylim, drop.unused.levels, lattice.options, default.scales, subset

See xyplot


Fallback prepanel function. See xyplot.

Further arguments. See corresponding entry in xyplot for non-trivial details.


An object of class "trellis". The update method can be used to update components of the object and the print method (usually called by default) will plot it on an appropriate plotting device.


splom produces Scatter Plot Matrices. The role usually played by panel is taken over by superpanel, which takes a data frame subset and is responsible for plotting it. It is called with the coordinate system set up to have both x- and y-limits from 0.5 to ncol(z) + 0.5. The only built-in option currently available is panel.pairs, which calls a further panel function for each pair (i, j) of variables in z inside a rectangle of unit width and height centered at c(i, j) (see panel.pairs for details).

Many of the finer customizations usually done via arguments to high level function like xyplot are instead done by panel.pairs for splom. These include control of axis limits, tick locations and prepanel calcultions. If you are trying to fine-tune your splom plot, definitely look at the panel.pairs help page. The scales argument is usually not very useful in splom, and trying to change it may have undesired effects.

parallelplot draws Parallel Coordinate Plots. (Difficult to describe, see example.)

These and all other high level Trellis functions have several arguments in common. These are extensively documented only in the help page for xyplot, which should be consulted to learn more detailed usage.

See Also

xyplot, Lattice, panel.pairs, panel.parallel.


Run this code
super.sym <- trellis.par.get("superpose.symbol")
splom(~iris[1:4], groups = Species, data = iris,
      panel = panel.superpose,
      key = list(title = "Three Varieties of Iris",
                 columns = 3, 
                 points = list(pch = super.sym$pch[1:3],
                 col = super.sym$col[1:3]),
                 text = list(c("Setosa", "Versicolor", "Virginica"))))
splom(~iris[1:3]|Species, data = iris, 
      layout=c(2,2), pscales = 0,
      varnames = c("Sepal\nLength", "Sepal\nWidth", "Petal\nLength"),
      page = function(...) {
          ltext(x = seq(.6, .8, length.out = 4), 
                y = seq(.9, .6, length.out = 4), 
                labels = c("Three", "Varieties", "of", "Iris"),
                cex = 2)
parallelplot(~iris[1:4] | Species, iris) 
parallelplot(~iris[1:4], iris, groups = Species,
             horizontal.axis = FALSE, scales = list(x = list(rot = 90)))
# }

Run the code above in your browser using DataCamp Workspace