Produces a matrix of strucplot displays.

```
# S3 method for table
pairs(x, upper_panel = pairs_mosaic, upper_panel_args = list(),
lower_panel = pairs_mosaic, lower_panel_args = list(),
diag_panel = pairs_diagonal_mosaic, diag_panel_args = list(),
main = NULL, sub = NULL, main_gp = gpar(fontsize = 20),
sub_gp = gpar(fontsize = 15), space = 0.3,
newpage = TRUE, pop = TRUE, return_grob = FALSE,
margins = unit(1, "lines"), ...)
```

- x
a contingency table in array form, with optional category labels specified in the

`dimnames(x)`

attribute.- upper_panel
function for the upper triangle of the matrix, or corresponding generating function. If

`NULL`

, no panel is drawn.- upper_panel_args
list of arguments for the generating function, if specified.

- lower_panel
function for the lower triangle of the matrix, or corresponding generating function. If

`NULL`

, no panel is drawn.- lower_panel_args
list of arguments for the panel-generating function, if specified.

- diag_panel
function for the diagonal of the matrix, or corresponding generating function. If

`NULL`

, no panel is drawn.- diag_panel_args
list of arguments for the generating function, if specified.

- main
either a logical, or a character string used for plotting the main title. If

`main`

is a logical and`TRUE`

, the name of the object supplied as`x`

is used.- sub
a character string used for plotting the subtitle. If

`sub`

is a logical and`TRUE`

and`main`

is unspecified, the name of the object supplied as`x`

is used.- main_gp, sub_gp
object of class

`"gpar"`

containing the graphical parameters used for the main (sub) title, if specified.- space
double specifying the distance between the cells.

- newpage
logical controlling whether a new grid page should be created.

- pop
logical indicating whether all viewports should be popped after the plot has been drawn.

- return_grob
logical. Should a snapshot of the display be returned as a grid grob?

- margins
either an object of class

`"unit"`

of length 4, or a numeric vector of length 4. The elements are recycled as needed. The four components specify the top, right, bottom, and left margin of the plot, respectively. When a numeric vector is supplied, the numbers are interpreted as`"lines"`

units. In addition, the unit or numeric vector may have named arguments (`top`,`right`,`bottom`, and`left`), in which case the non-named arguments specify the default values (recycled as needed), overloaded by the named arguments.- ...
For convenience, list of arguments for the panel-generating functions of upper and lower panels, if specified.

David Meyer David.Meyer@R-project.org

This is a `pairs`

method for objects inheriting
from class `"table"`

or `"structable"`

.
It plots a matrix of pairwise mosaic plots.

Four independence types are distinguished: `"pairwise"`

,
`"total"`

, `"conditional"`

and `"joint"`

.
The pairwise mosaic matrix shows bivariate marginal relations,
collapsed over all other variables.
The total independence mosaic matrix shows mosaic plots for mutual
independence, i.e., for marginal and conditional independence among
all pairs of variables.
The conditional independence mosaic matrix shows mosaic plots for
conditional independence for each pair of variables, given all other variables.
The joint independence mosaic matrix shows mosaic plots for joint
independence of all pairs of variables from the others.

This method uses panel functions called for each cell of the
matrix which can be different for upper matrix, lower matrix, and
diagonal cells. Correspondingly, for each panel parameter `foo`
(= `upper`, `lower`, or `diag`), `pairs.table`

takes
two arguments: `foo_panel` and `foo_panel_args`, which can
be used to specify the parameters as follows:

Passing a suitable panel function to

`foo_panel`which subsequently is called for each cell with the corresponding coordinates.Passing a corresponding

*generating function*(of class`"panel_generator"`

) to`foo_panel`, along with parameters passed to`foo_panel_args`, that generates such a function.

Hence, the second approach is equivalent to the first if
`foo_panel(foo_panel_args)` is passed to
`foo_panel`.

Cohen, A. (1980),
On the graphical display of the significant components in a two-way
contingency table.
*Communications in Statistics---Theory and Methods*, **A9**,
1025--1041.

Friendly, M. (1992),
Graphical methods for categorical data.
*SAS User Group International Conference Proceedings*, **17**,
190--200.
http://datavis.ca/papers/sugi/sugi17.pdf

Meyer, D., Zeileis, A., and Hornik, K. (2006),
The strucplot framework: Visualizing multi-way contingency tables with
vcd.
*Journal of Statistical Software*, **17(3)**, 1-48.
tools:::Rd_expr_doi("10.18637/jss.v017.i03") and available as
`vignette("strucplot")`

.

`pairs_mosaic`

,
`pairs_assoc`

,
`pairs_sieve`

,
`pairs_diagonal_text`

,
`pairs_diagonal_mosaic`

,
`pairs_text`

,
`pairs_barplot`

,
`assoc`

,
`sieve`

,
`mosaic`

```
data("UCBAdmissions")
data("PreSex")
data(HairEyeColor)
hec = structable(Eye ~ Sex + Hair, data = HairEyeColor)
pairs(PreSex)
pairs(UCBAdmissions)
pairs(UCBAdmissions, upper_panel_args = list(shade = TRUE))
pairs(UCBAdmissions, lower_panel = pairs_mosaic(type = "conditional"))
pairs(UCBAdmissions, diag_panel = pairs_text)
pairs(UCBAdmissions, upper_panel = pairs_assoc, shade = TRUE)
pairs(hec, highlighting = 2, diag_panel_args = list(fill = grey.colors))
pairs(hec, highlighting = 2, diag_panel = pairs_diagonal_mosaic,
diag_panel_args = list(fill = grey.colors, alternate_labels =TRUE))
```

Run the code above in your browser using DataLab