facet_nested()
forms a matrix of panels defined by row
and column faceting variables and nests grouped facets.
facet_nested(
rows = NULL,
cols = NULL,
scales = "fixed",
space = "fixed",
shrink = TRUE,
labeller = "label_value",
as.table = TRUE,
switch = NULL,
drop = TRUE,
margins = FALSE,
facets = NULL,
nest_line = FALSE,
resect = unit(0, "mm"),
bleed = FALSE
)
A set of variables or expressions quoted by
vars()
and defining faceting groups on the rows or columns
dimension. The variables can be named (the names are passed to
labeller
).
For compatibility with the classic interface, rows
can also be
a formula with the rows (of the tabular display) on the LHS and
the columns (of the tabular display) on the RHS; the dot in the
formula is used to indicate there should be no faceting on this
dimension (either row or column).
A set of variables or expressions quoted by
vars()
and defining faceting groups on the rows or columns
dimension. The variables can be named (the names are passed to
labeller
).
For compatibility with the classic interface, rows
can also be
a formula with the rows (of the tabular display) on the LHS and
the columns (of the tabular display) on the RHS; the dot in the
formula is used to indicate there should be no faceting on this
dimension (either row or column).
Are scales shared across all facets (the default,
"fixed"
), or do they vary across rows ("free_x"
),
columns ("free_y"
), or both rows and columns ("free"
)?
If "fixed"
, the default, all panels have the same size.
If "free_y"
their height will be proportional to the length of the
y scale; if "free_x"
their width will be proportional to the
length of the x scale; or if "free"
both height and width will
vary. This setting has no effect unless the appropriate scales also vary.
If TRUE
, will shrink scales to fit output of
statistics, not raw data. If FALSE
, will be range of raw data
before statistical summary.
A function that takes one data frame of labels and
returns a list or data frame of character vectors. Each input
column corresponds to one factor. Thus there will be more than
one with vars(cyl, am)
. Each output
column gets displayed as one separate line in the strip
label. This function should inherit from the "labeller" S3 class
for compatibility with labeller()
. You can use different labeling
functions for different kind of labels, for example use label_parsed()
for
formatting facet labels. label_value()
is used by default,
check it for more details and pointers to other options.
If TRUE
, the default, the facets are laid out like
a table with highest values at the bottom-right. If FALSE
, the
facets are laid out like a plot with the highest value at the top-right.
By default, the labels are displayed on the top and
right of the plot. If "x"
, the top labels will be
displayed to the bottom. If "y"
, the right-hand side
labels will be displayed to the left. Can also be set to
"both"
.
If TRUE
, the default, all factor levels not used in the
data will automatically be dropped. If FALSE
, all factor levels
will be shown, regardless of whether or not they appear in the data.
Either a logical value or a character
vector. Margins are additional facets which contain all the data
for each of the possible values of the faceting variables. If
FALSE
, no additional facets are included (the
default). If TRUE
, margins are included for all faceting
variables. If specified as a character vector, it is the names of
variables for which margins are to be created.
This argument is soft-deprecated, please use rows
and cols
instead.
a logical
vector of length 1, indicating whether to
draw a nesting line to indicate the nesting of variables. Control the look
of the nesting line by setting the ggh4x.facet.nestline
theme
element.
a unit
vector of length 1, indicating how much the
nesting line should be shortened.
a logical
vector of length 1, indicating whether merging
of lower-level variables is allowed when the higher-level variables are
separate. See details.
A FacetNested ggproto object.
Unlike facet_grid()
, this function only automatically expands
missing variables when they have no variables in that direction, to allow
for unnested variables. It still requires at least one layer to have all
faceting variables.
Hierarchies are inferred from the order of variables supplied to
rows
or cols
. The first variable is interpreted to be the
outermost variable, while the last variable is interpreted to be the
innermost variable. They display order is always such that the outermost
variable is placed the furthest away from the panels. Strips are
automatically grouped when they span a nested variable.
The bleed
argument controls whether lower-level variables are allowed
to be merged when higher-level are different, i.e. they can bleed over
hierarchies. Suppose the facet_grid()
behaviour would be the
following:
[_1_][_2_][_2_]
[_3_][_3_][_4_]
In such case, the default bleed = FALSE
argument would result in the
following:
[_1_][___2____]
[_3_][_3_][_4_]
Whereas bleed = TRUE
would allow the following:
[_1_][___2____]
[___3____][_4_]
See facet_grid
for descriptions of the
original arguments. See unit
for the construction of a
unit
vector.
Other facetting functions:
facet_nested_wrap()
,
facet_wrap2()
# NOT RUN {
df <- iris
df$nester <- ifelse(df$Species == "setosa",
"Short Leaves",
"Long Leaves")
ggplot(df, aes(Sepal.Length, Petal.Length)) +
geom_point() +
facet_nested(~ nester + Species)
# Controlling the nest line
ggplot(df, aes(Sepal.Length, Petal.Length)) +
geom_point() +
facet_nested(~ nester + Species, nest_line = TRUE) +
theme(ggh4x.facet.nestline = element_line(linetype = 3))
# }
Run the code above in your browser using DataLab