library(gglite)
Transforms are data manipulations applied to marks, similar to ggplot2’s
stat_*() and position_*() functions. Use transform() to add them.
Stack bars vertically.
df = data.frame(
x = rep(c('A', 'B', 'C'), each = 2), y = c(3, 2, 5, 4, 1, 6),
color = rep(c('a', 'b'), 3)
)
p = g2(df, y ~ x, color = ~ color) |> mark_interval()
p |> transform('stackY')
df = data.frame(
x = rep(1:5, 2), y = c(3, 1, 4, 1, 5, 2, 7, 1, 8, 3),
group = rep(c('A', 'B'), each = 5)
)
g2(df, y ~ x, color = ~ group) |>
mark_area() |>
transform('stackY')
Place bars side by side.
p |> transform('dodgeX')
Normalize to 100% (percent-stacked chart).
p |>
transform('stackY') |>
transform('normalizeY')
Add random jitter to reduce overplotting.
g2(mtcars, hp ~ cyl) |>
transform('jitterX')
g2(mtcars, gear ~ cyl) |>
transform('jitterX') |>
transform('jitterY')
Bin data along x for histograms.
g2(mtcars, ~ mpg) |>
mark_rect() |>
transform('binX', y = 'count', thresholds = 15)
Bin in two dimensions for heatmap-style plots.
g2(mtcars, hp ~ mpg) |>
mark_rect() |>
transform('bin', thresholdsX = 10, thresholdsY = 10)
Create a symmetric / butterfly chart.
df = data.frame(
x = rep(c('A', 'B', 'C'), each = 2), y = c(3, 2, 5, 4, 1, 6),
color = rep(c('Male', 'Female'), 3)
)
g2(df, y ~ x, color = ~ color) |>
mark_interval() |>
transform('stackY') |>
transform('symmetryY')
Sort data before rendering.
df = data.frame(x = c('C', 'A', 'B'), y = c(2, 5, 3))
g2(df, y ~ x) |>
transform('sortX', reverse = TRUE)
Transforms can be chained. Order matters.
p |>
transform('stackY') |>
transform('normalizeY') |>
coord_transpose()