Skip to contents

Create a bar ggplot with a wrapper around ggplot2::ggplot() + geom_bar().

Usage

gg_bar(
  data = NULL,
  ...,
  stat = "count",
  position = "stack",
  coord = ggplot2::coord_cartesian(clip = "off"),
  mode = NULL,
  x = NULL,
  xmin = NULL,
  xmax = NULL,
  xend = NULL,
  y = NULL,
  ymin = NULL,
  ymax = NULL,
  yend = NULL,
  z = NULL,
  col = NULL,
  facet = NULL,
  facet2 = NULL,
  group = NULL,
  subgroup = NULL,
  label = NULL,
  text = NULL,
  sample = NULL,
  mapping = NULL,
  x_breaks = NULL,
  x_expand = NULL,
  x_expand_limits = NULL,
  x_labels = NULL,
  x_n_breaks = NULL,
  x_sec_axis = ggplot2::waiver(),
  x_symmetric = NULL,
  x_position = "bottom",
  x_label = NULL,
  x_transform = NULL,
  y_breaks = NULL,
  y_expand = NULL,
  y_expand_limits = NULL,
  y_labels = NULL,
  y_n_breaks = NULL,
  y_sec_axis = ggplot2::waiver(),
  y_symmetric = NULL,
  y_position = "left",
  y_label = NULL,
  y_transform = NULL,
  col_breaks = NULL,
  col_drop = FALSE,
  col_expand_limits = NULL,
  col_labels = NULL,
  col_legend_ncol = NULL,
  col_legend_nrow = NULL,
  col_legend_rev = FALSE,
  col_n_breaks = 5,
  col_palette = NULL,
  col_palette_na = NULL,
  col_rescale = scales::rescale(),
  col_steps = FALSE,
  col_label = NULL,
  col_transform = NULL,
  facet_axes = NULL,
  facet_axis_labels = "margins",
  facet_drop = FALSE,
  facet_labels = NULL,
  facet_layout = NULL,
  facet_ncol = NULL,
  facet_nrow = NULL,
  facet_scales = "fixed",
  facet_space = "fixed",
  title = NULL,
  subtitle = NULL,
  caption = NULL,
  label_to_case = snakecase::to_sentence_case
)

Arguments

data

A data frame or tibble.

...

Other arguments passed to within a params list in layer().

stat

A statistical transformation to use on the data. A snakecase character string of a ggproto Stat subclass object minus the Stat prefix (e.g. "identity").

position

A position adjustment. A snakecase character string of a ggproto Position subclass object minus the Position prefix (e.g. "identity"), or a position_*() function that outputs a ggproto Position subclass object (e.g. ggplot2::position_identity()).

coord

A coordinate system. A coord_*() function that outputs a constructed ggproto Coord subclass object (e.g. ggplot2::coord_cartesian()).

mode

A ggplot2 theme (e.g. light_mode_t() or dark_mode_r()). This argument adds the theme with side-effects of removing relevant axis line/ticks and gridlines per the orientation. To avoid these side-effects, + the theme on to the output of gg_*.

x, xmin, xmax, xend, y, ymin, ymax, yend, z, col, facet, facet2, group, subgroup, label, text, sample

An unquoted aesthetic variable.

mapping

A set of additional aesthetic mappings in ggplot2::aes(). Intended primarily for non-supported aesthetics (e.g. shape, linetype, linewidth, or size), but can also be used for delayed evaluation etc.

x_breaks, y_breaks, col_breaks

A scales::breaks_* function (e.g. scales::breaks_*()), or a vector of breaks.

x_expand, y_expand

Padding to the limits with the ggplot2::expansion() function, or a vector of length 2 (e.g. c(0, 0)).

x_expand_limits, y_expand_limits, col_expand_limits

For a continuous variable, any values that the limits should encompass (e.g. 0). For a discrete scale, manipulate the data instead with forcats::fct_expand.

x_labels, y_labels, col_labels, facet_labels

A function that takes the breaks as inputs (e.g. \(x) stringr::str_to_sentence(x) or scales::label_*()), or a vector of labels. (Note this must be named for facet_labels).

x_n_breaks, y_n_breaks, col_n_breaks

A number of desired breaks for when *_breaks = NULL.

x_sec_axis, y_sec_axis

A secondary axis with ggplot2::dup_axis() or ggplot2::sec_axis().

x_symmetric, y_symmetric

TRUE or FALSE of whether a symmetric scale.

x_position, y_position

The position of the axis (i.e. "left", "right", "bottom" or "top").If using y_position = "top" with a *_mode_* theme, add caption = "" or caption = "\n".

x_label, y_label, col_label

Label for the axis or legend title. Use + ggplot2::labs(... = NULL) for no title.

x_transform, y_transform, col_transform

For a continuous scale, a transformation object (e.g. scales::transform_log10()) or character string of this minus the transform_ prefix (e.g. "log10").

col_drop, facet_drop

For a discrete variable, FALSE or TRUE of whether to drop unused levels.

col_legend_ncol, col_legend_nrow

The number of columns and rows in a legend guide.

col_legend_rev

TRUE or FALSE of whether to reverse the elements of a legend guide. Defaults to FALSE.

col_palette

A character vector of hex codes (or names) or a scales::pal_*() function.

col_palette_na

A hex code (or name) for the colour of NA values.

col_rescale

For a continuous variable, a scales::rescale() function.

col_steps

For a continuous variable, TRUE or FALSE of whether to colour in steps. Defaults to FALSE.

facet_axes

Whether to add interior axes and ticks with "margins", "all", "all_x", or "all_y". Sometimes + *_mode_*() may be needed.

facet_axis_labels

Whether to add interior axis labels with "margins", "all", "all_x", or "all_y".

facet_layout

Whether the layout is to be "wrap" or "grid". If NULL and a single facet (or facet2) argument is provided, then defaults to "wrap". If NULL and both facet and facet2 arguments are provided, defaults to "grid".

facet_ncol, facet_nrow

The number of columns and rows of facet panels. Only applies to a facet layout of "wrap".

facet_scales

Whether facet scales should be "fixed" across facets, "free" in both directions, or free in just one direction (i.e. "free_x" or "free_y"). Defaults to "fixed".

facet_space

When the facet layout is "grid" and facet scales are not "fixed", whether facet space should be "fixed" across facets, "free" to be proportional in both directions, or free to be proportional in just one direction (i.e. "free_x" or "free_y"). Defaults to "fixed".

title

Title string.

subtitle

Subtitle string.

caption

Caption title string.

label_to_case

A function to format the default x_label, y_label and col_label of unlabelled variables. Defaults to snakecase::to_sentence_case.

Value

A ggplot object.

Examples

library(ggplot2)
library(dplyr)
library(palmerpenguins)

set_blanket()

penguins |>
  tidyr::drop_na(sex) |>
  mutate(across(sex, \(x) stringr::str_to_sentence(x))) |>
  gg_bar(
    y = species,
    col = sex,
    position = position_dodge(preserve = "single"),
    width = 0.75,
  )