
Lollipop plots with optional dodging and auto label offsets
Source:R/adl_lollipop_plots.R
adl_lollipop_plots.Rd
Create vertical or horizontal lollipop plots for frequency-style data (bars replaced with stems and points). Supports grouped/dodged layouts, automatic label offsets based on axis span, and optional mapping of label color to the plotted color or group.
Usage
adl_lollipop_plots(
data,
x,
y,
col_label,
group = NULL,
color = NULL,
direction = "vertical",
col_text_size = 3.25,
distance_from_col = "auto",
auto_offset_prop = 0.03,
position = NULL,
dodge_width = 0.8,
dodge_reverse = TRUE,
wrap_facet_labels = 100,
point_size = 3.5,
line_width = 0.9,
text_color = FALSE,
...
)
Arguments
- data
A data frame or tibble.
- x
Variable that goes in the x-axis. This is required.
- y
Variable that goes in the y-axis. This is required.
- col_label
Variable used for text labels (e.g., the frequency value). - group
Optional grouping variable (used for dodging and color mapping when color = NULL
).- color
Optional variable to map color of stems/points (and labels when text_color = TRUE
).- direction
A character string indicating the direction of the lines. There are two options:
"vertical", the default, the bars are vertical
"horizontal" the bars are horizontal This must be set explicitly as it affects the location of the text, labels, and lines
- col_text_size
Numeric, text size for labels (default
3.25
).- distance_from_col
How far the labels are from the points in the plot. There are two options:
"auto", this checks the limits of the scales to determine how much space to add between the point and the text label (this is the default)
Numeric, a number referring to the size based on the scale
- auto_offset_prop
Numeric scalar (>= 0). Proportion of axis span used for the automatic label offset when
distance_from_col = "auto"
. Default is0.03
(i.e., 3% of span).- position
Either
NULL
(no dodging) or"dodge"
for grouped layouts."stack"
is not supported.- dodge_width
Numeric width passed to
position_dodge2()
(default0.8
).- dodge_reverse
Logical, whether to reverse the dodging order (default
TRUE
).- wrap_facet_labels
Integer passed to your faceting helpers if you facet elsewhere (kept for interface compatibility).
- point_size
Numeric, size of the lollipop head (default
3.5
).- line_width
Numeric, thickness of the lollipop stem (default
0.9
).- text_color
Logical; if
TRUE
,geom_text()
maps its color aesthetic tocolor
(orgroup
ifcolor
isNULL
). If both areNULL
, text uses "#14A2FCFF". IfFALSE
(default), text is drawn with a fixed color (#2c2e35
).- ...
Additional arguments passed to
theme_default()
.
Details
Lollipop stems are drawn with ggplot2::geom_linerange()
to
ensure proper behavior under position = "dodge"
. Labels can be offset by a
fixed amount or automatically by a proportion of the rendered axis span
(auto_offset_prop
), computed after scales are applied.
When both color
and group
are NULL
, stems and points are drawn with
adl_palettes$primary
, and labels default to #2c2e35
unless
text_color = TRUE
, in which case labels inherit the plotted color (or the
primary if unmapped).
For more information on how the arguments point_size and line_width check out vignette from the ggplot2 website:
Auto label offset
For
direction = "horizontal"
, the label offset is computed from the x-axis span.For
direction = "vertical"
, the label offset is computed from the y-axis span.If the span cannot be determined at build time, the offset falls back to
0.25
.
Examples
if (FALSE) { # \dontrun{
# Minimal vertical lollipop with auto label offset
adl_lollipop_plots(
data = df,
x = category,
y = count,
col_label = count,
direction = "vertical",
distance_from_col = "auto",
auto_offset_prop = 0.03
)
# Horizontal grouped with dodging; labels inherit color mapping
adl_lollipop_plots(
data = df,
x = count,
y = category,
col_label = count,
group = grp,
color = grp,
direction = "horizontal",
position = "dodge",
distance_from_col = "auto",
auto_offset_prop = 0.02,
text_color = TRUE
)
} # }