Shortcut version of geom_slabinterval()
for creating multiple-interval plots.
Roughly equivalent to:
geom_slabinterval(
aes(datatype = "interval", side = "both"),
interval_size_range = c(1, 6), show_slab = FALSE, show_point = FALSE
)
geom_interval(
mapping = NULL,
data = NULL,
stat = "identity",
position = "identity",
...,
orientation = NA,
interval_size_range = c(1, 6),
interval_size_domain = c(1, 6),
na.rm = FALSE,
show.legend = NA,
inherit.aes = TRUE
)
A ggplot2::Geom representing a multiple-interval geometry which can
be added to a ggplot()
object.
Set of aesthetic mappings created by aes()
. If specified and
inherit.aes = TRUE
(the default), it is combined with the default mapping
at the top level of the plot. You must supply mapping
if there is no plot
mapping.
The data to be displayed in this layer. There are three options:
If NULL
, the default, the data is inherited from the plot
data as specified in the call to ggplot()
.
A data.frame
, or other object, will override the plot
data. All objects will be fortified to produce a data frame. See
fortify()
for which variables will be created.
A function
will be called with a single argument,
the plot data. The return value must be a data.frame
, and
will be used as the layer data. A function
can be created
from a formula
(e.g. ~ head(.x, 10)
).
The statistical transformation to use on the data for this
layer, either as a ggproto
Geom
subclass or as a string naming the
stat stripped of the stat_
prefix (e.g. "count"
rather than
"stat_count"
)
Position adjustment, either as a string, or the result of a call to a position adjustment function.
Setting this equal to "dodge"
(position_dodge()
) or "dodgejust"
(position_dodgejust()
) can be useful if
you have overlapping geometries.
Other arguments passed to layer()
. These are often aesthetics, used to set an aesthetic
to a fixed value, like colour = "red"
or linewidth = 3
(see Aesthetics, below). They may also be
parameters to the paired geom/stat.
Whether this geom is drawn horizontally or vertically. One of:
NA
(default): automatically detect the orientation based on how the aesthetics
are assigned. Automatic detection works most of the time.
"horizontal"
(or "y"
): draw horizontally, using the y
aesthetic to identify different
groups. For each group, uses the x
, xmin
, xmax
, and thickness
aesthetics to
draw points, intervals, and slabs.
"vertical"
(or "x"
): draw vertically, using the x
aesthetic to identify different
groups. For each group, uses the y
, ymin
, ymax
, and thickness
aesthetics to
draw points, intervals, and slabs.
For compatibility with the base ggplot naming scheme for orientation
, "x"
can be used as an alias
for "vertical"
and "y"
as an alias for "horizontal"
(ggdist had an orientation
parameter
before base ggplot did, hence the discrepancy).
A length-2 numeric vector. This geom scales the raw size aesthetic values when drawing interval and point
sizes, as they tend to be too thick when using the default settings of scale_size_continuous()
, which give
sizes with a range of c(1, 6)
. The interval_size_domain
value indicates the input domain of raw size
values (typically this should be equal to the value of the range
argument of the scale_size_continuous()
function), and interval_size_range
indicates the desired output range of the size values (the min and max of
the actual sizes used to draw intervals). Most of the time it is not recommended to change the value of this
argument, as it may result in strange scaling of legends; this argument is a holdover from earlier versions
that did not have size aesthetics targeting the point and interval separately. If you want to adjust the
size of the interval or points separately, you can also use the linewidth
or point_size
aesthetics; see scales.
A length-2 numeric vector giving the minimum and maximum of the values of the size
and linewidth
aesthetics that will be
translated into actual sizes for intervals drawn according to interval_size_range
(see the documentation
for that argument.)
If FALSE
, the default, missing values are removed with a warning. If TRUE
, missing
values are silently removed.
logical. Should this layer be included in the legends?
NA
, the default, includes if any aesthetics are mapped.
FALSE
never includes, and TRUE
always includes.
It can also be a named logical vector to finely select the aesthetics to
display.
If FALSE
, overrides the default aesthetics,
rather than combining with them. This is most useful for helper functions
that define both data and aesthetics and shouldn't inherit behaviour from
the default plot specification, e.g. borders()
.
The slab+interval stat
s and geom
s have a wide variety of aesthetics that control
the appearance of their three sub-geometries: the slab, the point, and
the interval.
Positional aesthetics
x
: x position of the geometry
y
: y position of the geometry
Interval-specific aesthetics
xmin
: Left end of the interval sub-geometry (if orientation = "horizontal"
).
xmax
: Right end of the interval sub-geometry (if orientation = "horizontal"
).
ymin
: Lower end of the interval sub-geometry (if orientation = "vertical"
).
ymax
: Upper end of the interval sub-geometry (if orientation = "vertical"
).
Color aesthetics
colour
: (or color
) The color of the interval and point sub-geometries.
Use the slab_color
, interval_color
, or point_color
aesthetics (below) to
set sub-geometry colors separately.
fill
: The fill color of the slab and point sub-geometries. Use the slab_fill
or point_fill
aesthetics (below) to set sub-geometry colors separately.
alpha
: The opacity of the slab, interval, and point sub-geometries. Use the slab_alpha
,
interval_alpha
, or point_alpha
aesthetics (below) to set sub-geometry colors separately.
colour_ramp
: (or color_ramp
) A secondary scale that modifies the color
scale to "ramp" to another color. See scale_colour_ramp()
for examples.
fill_ramp
: A secondary scale that modifies the fill
scale to "ramp" to another color. See scale_fill_ramp()
for examples.
Line aesthetics
linewidth
: Width of the line used to draw the interval (except with geom_slab()
: then
it is the width of the slab). With composite geometries including an interval and slab,
use slab_linewidth
to set the line width of the slab (see below). For interval, raw
linewidth
values are transformed according to the interval_size_domain
and interval_size_range
parameters of the geom
(see above).
size
: Determines the size of the point. If linewidth
is not provided, size
will
also determines the width of the line used to draw the interval (this allows line width and
point size to be modified together by setting only size
and not linewidth
). Raw
size
values are transformed according to the interval_size_domain
, interval_size_range
,
and fatten_point
parameters of the geom
(see above). Use the point_size
aesthetic
(below) to set sub-geometry size directly without applying the effects of
interval_size_domain
, interval_size_range
, and fatten_point
.
stroke
: Width of the outline around the point sub-geometry.
linetype
: Type of line (e.g., "solid"
, "dashed"
, etc) used to draw the interval
and the outline of the slab (if it is visible). Use the slab_linetype
or
interval_linetype
aesthetics (below) to set sub-geometry line types separately.
Interval-specific color/line override aesthetics
interval_colour
: (or interval_color
) Override for colour
/color
: the color of the interval.
interval_alpha
: Override for alpha
: the opacity of the interval.
interval_linetype
: Override for linetype
: the line type of the interval.
Deprecated aesthetics
interval_size
: Use interval_linewidth
.
Other aesthetics (these work as in standard geom
s)
width
height
group
See examples of some of these aesthetics in action in vignette("slabinterval")
.
Learn more about the sub-geom override aesthetics (like interval_color
) in the
scales documentation. Learn more about basic ggplot aesthetics in
vignette("ggplot2-specs")
.
This geom wraps geom_slabinterval()
with defaults designed to produce
multiple-interval plots. Default aesthetic mappings are applied if the .width
column
is present in the input data (e.g., as generated by the point_interval()
family of functions),
making this geom often more convenient than vanilla ggplot2 geometries when used with
functions like median_qi()
, mean_qi()
, mode_hdi()
, etc.
Specifically, if .width
is present in the input, geom_interval()
acts
as if its default aesthetics are aes(colour = forcats::fct_rev(ordered(.width)))
See stat_interval()
for the stat version, intended for
use on sample data or analytical distributions.
See geom_slabinterval()
for the geometry this shortcut is based on.
Other slabinterval geoms:
geom_pointinterval()
,
geom_slab()
,
geom_spike()
library(dplyr)
library(ggplot2)
theme_set(theme_ggdist())
data(RankCorr_u_tau, package = "ggdist")
# orientation is detected automatically based on
# use of xmin/xmax or ymin/ymax
RankCorr_u_tau %>%
group_by(i) %>%
median_qi(.width = c(.5, .8, .95, .99)) %>%
ggplot(aes(y = i, x = u_tau, xmin = .lower, xmax = .upper)) +
geom_interval() +
scale_color_brewer()
RankCorr_u_tau %>%
group_by(i) %>%
median_qi(.width = c(.5, .8, .95, .99)) %>%
ggplot(aes(x = i, y = u_tau, ymin = .lower, ymax = .upper)) +
geom_interval() +
scale_color_brewer()
Run the code above in your browser using DataLab