Learn R Programming

ggsketch (version 2.0.0)

GeomSketchGantt: Sketchy Gantt / timeline chart

Description

Draws a hand-drawn Gantt chart: one roughened bar per task from x (start) to xend (end) on a discrete y -- the whiteboard project-planning look. Map an optional progress aesthetic (0 to 1) to overlay a slimmer, darker solid bar over the completed fraction of each task. Works with dates, date-times or plain numbers on the x axis, and with every fill_style (including "watercolor"); corner_radius rounds the bar ends.

Usage

GeomSketchGantt

geom_sketch_gantt( mapping = NULL, data = NULL, stat = "identity", position = "identity", ..., height = 0.55, progress_shade = 0.65, corner_radius = 0.15, fill_style = "hachure", roughness = 1, bowing = 1, n_passes = 2L, seed = NULL, na.rm = FALSE, show.legend = NA, inherit.aes = TRUE )

Value

A ggplot2 layer object.

Arguments

mapping

Aesthetic mappings created by ggplot2::aes(). Requires x, xend and y; optionally progress (completed fraction, 0-1).

data

Data to display.

stat

Statistical transformation. Default "identity".

position

Position adjustment. Default "identity".

...

Other arguments passed on to the layer.

height

Bar height in y units. Default 0.55.

progress_shade

Channel multiplier (< 1 darkens) for the progress overlay's fill. Default 0.65.

corner_radius

Corner rounding of the bars; see geom_sketch_rect(). Default 0.15.

fill_style

Bar fill style; see geom_sketch_rect(). Default "hachure".

roughness, bowing, n_passes, seed

Sketch parameters.

na.rm

Remove missing values silently? Default FALSE.

show.legend

Logical; include in legend?

inherit.aes

Override default aesthetics?

See Also

Other sketch-geoms: GeomSketchAbline, GeomSketchArrow, GeomSketchBoxplot, GeomSketchBracket, GeomSketchCallout, GeomSketchChicklet, GeomSketchCol, GeomSketchContourFilled, GeomSketchCurve, GeomSketchDotplot, GeomSketchDumbbell, GeomSketchEdge, GeomSketchEllipse, GeomSketchEngrave, GeomSketchHex, GeomSketchLine, GeomSketchLinerange, GeomSketchLollipop, GeomSketchMarkCircle, GeomSketchMarkHull, GeomSketchPath, GeomSketchPoint, GeomSketchPolygon, GeomSketchRect, GeomSketchRibbon, GeomSketchRug, GeomSketchSegment, GeomSketchSfPolygon, GeomSketchSlope, GeomSketchSmooth, GeomSketchSpoke, GeomSketchTextRepel, GeomSketchViolin, StatSketchBeeswarm, StatSketchCalendar, StatSketchDensityRidges, StatSketchFunnel, StatSketchPie, StatSketchPyramid, StatSketchRadar, StatSketchStream, StatSketchTreemap, StatSketchWaffle, StatSketchWaterfall, annotate_sketch(), annotate_sketch_arrow(), annotate_sketch_callout(), annotate_sketch_highlight(), geom_sketch_alluvial(), geom_sketch_arc_diagram(), geom_sketch_bin2d(), geom_sketch_bump(), geom_sketch_chord(), geom_sketch_contour(), geom_sketch_count(), geom_sketch_dendrogram(), geom_sketch_density(), geom_sketch_density2d(), geom_sketch_ecdf(), geom_sketch_function(), geom_sketch_histogram(), geom_sketch_jitter(), geom_sketch_marimekko(), geom_sketch_mosaic(), geom_sketch_parallel(), geom_sketch_qq(), geom_sketch_quantile(), geom_sketch_rose(), geom_sketch_sunburst(), geom_sketch_text(), sketch_graph()

Examples

Run this code
library(ggplot2)
plan <- data.frame(
  task  = factor(c("Design", "Build", "Test", "Ship"),
                 levels = rev(c("Design", "Build", "Test", "Ship"))),
  start = as.Date(c("2026-01-05", "2026-01-19", "2026-02-09", "2026-02-23")),
  end   = as.Date(c("2026-01-23", "2026-02-13", "2026-02-27", "2026-03-06")),
  done  = c(1, 0.7, 0.25, 0)
)
ggplot(plan, aes(x = start, xend = end, y = task, fill = task,
                 progress = done)) +
  geom_sketch_gantt(seed = 1L, show.legend = FALSE) +
  theme_sketch()

Run the code above in your browser using DataLab