Skip to contents

Overview

This article will demonstrate each wrapper function.

gg_area

economics |>
  gg_area(
    x = date,
    y = unemploy,
    y_title = "Unemployment", 
  )

gg_bar

penguins |>
  mutate(across(sex, str_to_sentence)) |> 
  gg_bar(
    position = position_dodge(preserve = "single"),
    y = species,
    col = sex,
    width = 0.75,
  )

gg_bin_2d

diamonds |>
  gg_bin_2d(
    x = carat,
    y = price,
    col_palette = viridisLite::mako(9),
  )

gg_boxplot

penguins |>
  drop_na(sex) |> 
  mutate(across(sex, str_to_sentence)) |> 
  gg_boxplot(
    x = flipper_length_mm,
    y = sex,
    col = species,
    mode = dark_mode_b(),
  )

gg_col

penguins |>
  drop_na(sex) |> 
  mutate(across(sex, str_to_sentence)) |> 
  group_by(sex, species) |>
  summarise(across(flipper_length_mm, \(x) mean(x, na.rm = TRUE))) |>
  gg_col(
    position = position_dodge(preserve = "single"),
    x = flipper_length_mm,
    y = species,
    col = sex,
    width = 0.75,
  )

gg_contour

faithfuld |>
 gg_contour(
   x = waiting,
   y = eruptions,
   z = density,
 )

gg_contour_filled

faithfuld |>
 gg_contour_filled(
   x = waiting,
   y = eruptions,
   z = density,
   bins = 8,
   col_palette = viridisLite::mako(9),
 )

gg_crossbar

data.frame(
  trt = factor(c(1, 1, 2, 2)),
  resp = c(1, 5, 3, 4),
  group = factor(c(1, 2, 1, 2)),
  upper = c(1.1, 5.3, 3.3, 4.2),
  lower = c(0.8, 4.6, 2.4, 3.6)) |>
  gg_crossbar(
    x = trt,
    y = resp,
    ymin = lower,
    ymax = upper,
    col = group,
    width = 0.5,
    x_title = "Treatment",
    y_title = "Response",
  )

gg_density

penguins |>
  drop_na(sex) |> 
  mutate(across(sex, str_to_sentence)) |> 
  gg_density(
    x = flipper_length_mm,
    col = species,
    mode = dark_mode_t(),
  )

gg_density_2d

faithful |>
  gg_density_2d(
    x = waiting,
    y = eruptions,
    bins = 8,
    contour = TRUE,
  )

gg_density_2d_filled

faithful |>
  gg_density_2d_filled(
    x = waiting,
    y = eruptions,
    bins = 8,
    col_palette = viridisLite::mako(8),
    contour = TRUE,
  )

gg_errorbar

data.frame(
  trt = factor(c(1, 1, 2, 2)),
  resp = c(1, 5, 3, 4),
  group = factor(c(1, 2, 1, 2)),
  upper = c(1.1, 5.3, 3.3, 4.2),
  lower = c(0.8, 4.6, 2.4, 3.6)
  ) |>
  gg_errorbar(
    x = trt,
    ymin = lower,
    ymax = upper,
    col = group,
    width = 0.1,
    x_title = "Treatment",
    y_title = "Response",
  )

gg_freqpoly

penguins |>
  mutate(across(sex, str_to_sentence)) |> 
  gg_freqpoly(
    x = flipper_length_mm,
    col = sex,
    mode = dark_mode_t(),
  ) +
  labs(colour = NULL, fill = NULL)

gg_function

gg_function(
  fun = \(x) dnorm(x, mean = 0, sd = 5),
  x_limits = qnorm(p = c(0.005, 0.995), mean = 0, sd = 5),
  y_expand_limits = 0,
)

gg_hex

diamonds |>
  gg_hex(
    x = carat,
    y = price,
    y_limits = c(0, 20000),
    coord = coord_cartesian(clip = "on"), 
    col_palette = viridisLite::mako(9),
  )

gg_histogram

penguins |>
  mutate(across(sex, str_to_sentence)) |> 
  gg_histogram(
    x = flipper_length_mm,
    col = sex,
    facet = species,
    bins = 50,
    mode = dark_mode_b(),
  )

gg_jitter

set.seed(123)

penguins |>
  gg_jitter(
    position = position_jitter(), 
    x = species,
    y = body_mass_g,
    col = flipper_length_mm,
    y_expand_limits = 0,
    col_steps = TRUE,
    col_labels = replace_seq,
    col_palette = viridisLite::mako(9),
  )

gg_label

bind_rows(
  mtcars |> slice_min(order_by = mpg),
  mtcars |> slice_max(order_by = mpg)) |>
  tibble::rownames_to_column("model") |>
  gg_label(
    x = model,
    y = mpg,
    col = mpg,
    label = model,
    y_expand_limits = 0,
    y_title = "Miles per gallon", 
    col_palette = c(orange, "white", teal),
  )

gg_line

economics |>
  gg_line(
    x = date,
    y = unemploy,
    y_expand_limits = 0, 
    y_title = "Unemployment",
  )

gg_linerange

data.frame(
  trt = factor(c(1, 1, 2, 2)),
  resp = c(1, 5, 3, 4),
  group = factor(c(1, 2, 1, 2)),
  upper = c(1.1, 5.3, 3.3, 4.2),
  lower = c(0.8, 4.6, 2.4, 3.6)) |>
  gg_linerange(
    position = position_dodge(width = 0.2),
    x = trt,
    ymin = lower,
    ymax = upper,
    col = group,
    x_title = "Treatment",
    y_title = "Response",
  )

gg_path

economics |>
  mutate(unemploy_rate = unemploy / pop) |>
  gg_path(
    x = unemploy_rate,
    y = psavert,
    x_title = "Unemployment rate",
    y_expand_limits = 0,
    y_title = "Personal savings rate",
  )

gg_point

penguins |>
  gg_point(
    x = flipper_length_mm,
    y = body_mass_g, 
    col = species,
  )

gg_pointrange

data.frame(
  trt = factor(c(1, 1, 2, 2)),
  resp = c(1, 5, 3, 4),
  group = factor(c(1, 2, 1, 2)),
  upper = c(1.1, 5.3, 3.3, 4.2),
  lower = c(0.8, 4.6, 2.4, 3.6)) |>
  gg_pointrange(
    position = position_dodge(width = 0.2),
    x = trt,
    y = resp,
    col = group,
    ymin = lower,
    ymax = upper,
    x_title = "Treatment",
    y_title = "Response",
  )

gg_polygon

ids <- factor(c("1.1", "2.1", "1.2", "2.2", "1.3", "2.3"))

values <- data.frame(
  id = ids,
  value = c(3, 3.1, 3.1, 3.2, 3.15, 3.5)
)

positions <- data.frame(
  id = rep(ids, each = 4),
  x = c(2, 1, 1.1, 2.2, 1, 0, 0.3, 1.1, 2.2, 1.1, 1.2, 2.5, 1.1, 0.3,
        0.5, 1.2, 2.5, 1.2, 1.3, 2.7, 1.2, 0.5, 0.6, 1.3),
  y = c(-0.5, 0, 1, 0.5, 0, 0.5, 1.5, 1, 0.5, 1, 2.1, 1.7, 1, 1.5,
        2.2, 2.1, 1.7, 2.1, 3.2, 2.8, 2.1, 2.2, 3.3, 3.2)
)

datapoly <- merge(values, positions, by = c("id"))

datapoly |>
  gg_polygon(
    x = x,
    y = y,
    col = value,
    group = id,
    col_palette = viridisLite::mako(9),
  )

gg_qq

penguins |>
  gg_qq(
    sample = body_mass_g,
    facet = species,
    coord = coord_cartesian(clip = "on"), 
  ) +
  geom_qq_line(
    colour = blue,
  )

gg_quantile

penguins |>
  gg_quantile(
    x = flipper_length_mm,
    y = body_mass_g,
  )

gg_raster

faithfuld |>
  gg_raster(
    x = waiting,
    y = eruptions,
    col = density,
    col_palette = viridisLite::mako(9),
  )

gg_rect

data.frame(
  x = rep(c(2, 5, 7, 9, 12), 2),
  y = rep(c(1, 2), each = 5),
  z = factor(c(rep(1:3, each = 3), 4)),
  w = rep(diff(c(0, 4, 6, 8, 10, 14)), 2)) |>
  mutate(
    xmin = x - w / 2,
    xmax = x + w / 2,
    ymin = y,
    ymax = y + 1
  ) |>
  gg_rect(
    xmin = xmin,
    xmax = xmax,
    ymin = ymin,
    ymax = ymax,
    col = z,
  )

gg_ribbon

data.frame(year = 1875:1972, level = as.vector(LakeHuron)) |>
  mutate(level_min = level - 1, level_max = level + 1) |>
  mutate(h = "") |> 
  gg_ribbon(
    x = year,
    ymin = level_min,
    ymax = level_max,
    col = h,
    colour = NA,
    x_labels = \(x) x,
    y_title = "Level",
    mode = light_mode_n(),
  ) +
  geom_line(
    mapping = aes(x = year, y = level), 
  )

gg_rug

penguins |>
  mutate(across(sex, \(x) str_to_sentence(x))) |>
  gg_rug(
    x = flipper_length_mm,
    y = body_mass_g,
    col = sex,
  )

gg_segment

data.frame(x1 = 2.62, x2 = 3.57, y1 = 21.0, y2 = 15.0) |>
  gg_segment(
    x = x1,
    xend = x2,
    y = y1,
    yend = y2,
  )

gg_sf

sf::st_read(system.file("shape/nc.shp", package = "sf")) |> 
  gg_sf(
    col = AREA, 
    col_palette = viridisLite::mako(9),
  )
#> Reading layer `nc' from data source 
#>   `/home/runner/work/_temp/Library/sf/shape/nc.shp' using driver `ESRI Shapefile'
#> Simple feature collection with 100 features and 14 fields
#> Geometry type: MULTIPOLYGON
#> Dimension:     XY
#> Bounding box:  xmin: -84.32385 ymin: 33.88199 xmax: -75.45698 ymax: 36.58965
#> Geodetic CRS:  NAD27

gg_smooth

penguins |>
  drop_na(sex) |> 
  mutate(across(sex, str_to_sentence)) |> 
  gg_smooth(
    x = flipper_length_mm,
    y = body_mass_g,
    col = sex,
    se = TRUE,
  )

gg_step

economics |>
  gg_step(
    x = date,
    y = unemploy,
    coord = coord_cartesian(clip = "on"),
    x_limits = c(lubridate::ymd("2010-01-01"), lubridate::NA_Date_), 
    y_expand_limits = 0,
    y_title = "Unemployment",
  )

gg_text

bind_rows(
  mtcars |> slice_min(order_by = mpg),
  mtcars |> slice_max(order_by = mpg)) |>
  tibble::rownames_to_column("model") |>
  gg_text(
    x = model,
    y = mpg,
    col = mpg,
    label = model,
    y_expand_limits = 0,
    y_title = "Miles per gallon",
    col_palette = c(orange, "white", teal),
  )

gg_tile

penguins |>
  mutate(across(sex, str_to_sentence)) |> 
  group_by(species, sex) |>
  summarise(flipper_length_mm = mean(flipper_length_mm, na.rm = TRUE)) |>
  gg_tile(
    x = sex,
    y = species,
    col = flipper_length_mm,
    col_palette = viridisLite::mako(9),
  )

gg_violin

penguins |>
  drop_na(sex) |> 
  mutate(across(sex, str_to_sentence)) |> 
  gg_violin(
    x = sex,
    y = body_mass_g,
    col = species,
  )

gg_blanket

penguins |>
  drop_na(sex) |>
  mutate(across(sex, \(x) str_to_sentence(x))) |>
  gg_blanket(
    geom = "violin",
    stat = "ydensity",
    position = "dodge",
    x = sex,
    y = body_mass_g,
    col = species,
  )