Preview BuildTukeySheets is currently a preview build — expect frequent updates.

Plot DSL

Plots in TukeySheets are described by a TOML document. A document has one [plot] section (title, axes, coords) and one or more [[layer]] blocks, each with a mark + the cell ranges it pulls from.

points

Draws individual data points as geometric shapes at (x, y) coordinates.

Use for scatter plots, comparing two continuous variables, or showing the distribution of data. Supports shape, size, color, and alpha aesthetics.

Parameters

xContinuous or discrete x values
yContinuous y values
fillOptional: column to color-code points
sizeOptional: column or constant for point size
shapeOptional: circle, square, triangle, diamond, doughnut…

Example

[plot]
x = "A1:A10"
y = "B1:B10"

[[layer]]
mark = "points"
[layer.params]
size = 5

beeswarm

Plots individual data points along an axis, spreading them to avoid overlap so every point is visible.

Use when you want to show all data points in a distribution without overlap. Works well for small-to-medium datasets where individual observations matter. Supports color, size, and grouping.

Parameters

xCategory or group column
yContinuous measurement
sizeDot radius (default: 3)
fillOptional: fill color (or column to color-code by group)
spacingGap between overlapping points (default: 1.5)
alphaOpacity (0–1)

Example

[plot]
x = "A1:A36"
y = "B1:B36"

[[layer]]
mark = "beeswarm"
[layer.params]
size = 4
spacing = 1.5

line

Connects data points in x order with straight line segments, or a smooth Catmull-Rom spline when smooth = true.

Use for time series, trends, or any ordered data. Set smooth = true to draw a curved spline through the points instead of straight segments. Map the color aesthetic to a column to draw multiple lines.

Parameters

xOrdered x values (time, index, etc.)
yContinuous y values
strokeOptional: column for multiple series
linewidthLine thickness in pixels (default: 1)
linetypeOptional: solid, dashed, dotted, dotdash, longdash, twodash
smoothSet to true to draw a smooth Catmull-Rom spline (default: false)
alphaOpacity (0–1)

Example

[plot]
x = "A1:A10"
y = "B1:B10"

[[layer]]
mark = "line"
[layer.params]
linewidth = 2
smooth = true

area

Fills the region between the data line and a baseline (default 0).

Use for cumulative totals, showing magnitude over time, or stacked area charts. The alpha aesthetic controls transparency. Combine with ribbon for confidence bands.

Parameters

xOrdered x values
yValues defining the top edge of the area
alphaOptional: 0–1 transparency

Example

[plot]
x = "A1:A10"
y = "B1:B10"

[[layer]]
mark = "area"
[layer.params]
alpha = 0.6

bump

A bump chart shows how rankings change over time, using smooth curves between rank positions.

Use to visualize rank changes across categories or time periods. Each series is a smooth S-curve between rank positions. Map x to time, y to rank, color to the entity being ranked.

Parameters

xTime points (periods)
yRank at each time point (1 = top)
strokeEntity or group being ranked
line_widthWidth of the ranking curves (default: 2)
point_sizeSize of the dots at each rank position (default: 4)
show_labelsShow entity labels: "right" or "none" (default)
alphaOpacity (0–1)
rankRank y-values within each x (default: true). Set false if data is pre-ranked
rank_direction"desc" (default: largest y → rank 1) or "asc"

Example

[plot]
legend = "none"

[[layer]]
mark = "bump"
[layer.aes]
x = "A1:A42"
y = "B1:B42"
stroke = "C1:C42"
[layer.params]
line_width = 2
point_size = 4
show_labels = "right"

ribbon

Fills the area between ymin and ymax across x values.

Use for confidence intervals, prediction bands, or any range display. Map ymin and ymax aesthetics to the lower and upper bounds. Combine with a line mark for the center.

Parameters

xOrdered x values
yminLower bound of the ribbon
ymaxUpper bound of the ribbon

Example

[plot]
x = "A1:A10"

[[layer]]
mark = "ribbon"
[layer.aes]
ymin = "B1:B10"
ymax = "C1:C10"
[layer.params]
alpha = 0.3

smooth

Fits and draws a smoothed curve through the data with an optional confidence ribbon.

Use to show underlying trends without point-to-point noise. The method param controls the fitting approach. Combine with points for best results.

Parameters

xx values
yy values to smooth
methodlm = linear regression; loess = locally weighted regression (tricube kernel). Other values fall back to lm.
spanLoess neighbourhood fraction (default 0.75; 0.3 = wiggly, 0.9 = smooth)
setrue/false — show confidence ribbon
levelConfidence level for the ribbon (default 0.95)
fillConfidence-ribbon color (defaults to the line stroke color)

Example

[plot]
x = "A1:A15"
y = "B1:B15"

[[layer]]
mark = "points"

[[layer]]
mark = "smooth"
[layer.params]
method = "lm"
se = true
color = "#e31a1c"

stream

A streamgraph — stacked area chart centered on a flowing baseline for a flowing, organic look.

Use to show how multiple categories contribute to a total over time. Requires x, y, and a group/fill aesthetic. The baseline param controls the stacking style.

Parameters

xTime or ordered x values
yValue for each group at each x
fillGroup / category column
baseline"wiggle" (default), "zero", or "expand"
alphaOpacity (0–1)

Example

[plot]
x = "A1:A50"

[[layer]]
mark = "stream"
[layer.aes]
y = "B1:B50"
fill = "C1:C50"

bars

Draws vertical bars from a baseline to the y value for each x position.

Use for comparing discrete categories or aggregate values. Supports fill, color, alpha, and width params. Use stat = "count" to auto-count categories.

Parameters

xCategory or discrete x values
yBar heights
fillOptional: color-code bars by a column

Example

[plot]
x = "A1:A7"
y = "B1:B7"

[[layer]]
mark = "bars"
[layer.params]
alpha = 0.9

stacked_bars

Stacks bars at each x position, grouped and colored by a categorical column.

Use to show part-to-whole relationships across categories. Map x to the category, y to the value, and color to the grouping column. Groups are stacked in first-appearance order.

Parameters

xCategory or x position
yValue for this group at this x
fillGrouping column (one color per stack segment)
widthBar width fraction (default: 0.9)
alphaOpacity (0–1)

Example

[plot]
x = "A1:A12"
y = "B1:B12"

[[layer]]
mark = "stacked_bars"
color = "C1:C12"

dumbbell

Draws a horizontal line between two values per row, with dots at each end — showing the gap between two measures.

Use to compare before/after values, two groups, or the range between two related quantities per category. Map xmin to the first value, xmax to the second, and x to the row position.

Parameters

xRow position (y-axis slot)
xminLeft / start value
xmaxRight / end value
color_startColor of the left dot (default: #4292c6)
color_endColor of the right dot (default: #e34a33)
line_colorColor of the connecting line (default: #cccccc)
line_widthWidth of the connecting line (default: 1.5)
sizeDot radius (default: 5)
alphaOpacity (0–1)

Example

[plot]

[[layer]]
mark = "dumbbell"
[layer.aes]
x = "C1:C40"
xmin = "A1:A40"
xmax = "B1:B40"
[layer.params]
size = 5

waterfall

Shows a running total with bars that go up or down, highlighting each increment or decrement.

Use for financial statements, budget breakdowns, or any cumulative contribution chart. Positive values go up, negative go down; a total bar is drawn at the end.

Parameters

xCategory or stage label
yChange in value (positive or negative)

Example

[plot]
x = "A1:A10"
y = "B1:B10"

[[layer]]
mark = "waterfall"

boxplot

Displays the five-number summary (min, Q1, median, Q3, max) and outliers as a box-and-whisker plot.

Use to compare distributions across categories. Map x to the grouping variable and y to the continuous measurement. Supports fill, alpha, and notch.

Parameters

xGroup or category column
yContinuous measurement
fillOptional: fill color by group
strokeBox outline color
widthBox width (default: 0.7)
alphaOpacity (0–1)

Example

[plot]
x = "A1:A100"
y = "B1:B100"

[[layer]]
mark = "boxplot"
stat = "boxplot"
[layer.params]
alpha = 0.7

density

Draws a kernel density estimate (KDE) — a smoothed, continuous representation of a data distribution.

Use instead of a histogram when you want a smooth curve not dependent on bin width. Map x to the continuous variable. Use threshold_x with fill_below and fill_above to split the area into two differently-colored regions.

Parameters

xContinuous values to estimate density from
fillFill color under the curve
strokeOutline/line color (use "none" to hide)
alphaOpacity (0–1)
threshold_xOptional: x value that splits the curve into two colored regions
fill_belowFill color for the region left of threshold_x (falls back to fill)
fill_aboveFill color for the region right of threshold_x (falls back to fill)

Example

[plot]
x = "A1:A30"

[[layer]]
mark = "density"
stat = "density"
[layer.params]
alpha = 0.6
fill = "#4292c6"
fill_below = "#e07b39"
threshold_x = 33.4

histogram

Bins a continuous variable into intervals and draws bars showing the count or density in each bin.

Use to visualize the distribution of a single continuous variable. Adjust the bins param to control granularity. Supports fill, alpha, and bins.

Parameters

xContinuous values to bin
binsNumber of bins (default: 30)
gapPixel gap between adjacent bars (default: 1)
fillBar fill color
strokeBar outline color
alphaOpacity (0–1)

Example

[plot]
x = "A1:A150"

[coord_cartesian]
ylim = [0, 22]

[[layer]]
mark = "histogram"
[layer.params]
bins = 18
gap = 1
fill = "#4c8ecd"
alpha = 0.85

violin

A mirrored density plot that reveals the full shape and spread of the data distribution.

Use alongside boxplot for a richer view — violins show multimodality that boxplots hide. Map x to the group, y to the measurement. Supports fill, alpha, and scale.

Parameters

xGroup or category
yContinuous measurement
fillFill color of the violin body (default: #4292c6)
strokeBorder color (default: #333333) — use "none" to hide
stroke_widthBorder line width (default: 1.0)
alphaOpacity (0–1, default: 0.7)
widthRelative width of each violin (default: 0.7)
bw_adjustMultiplier on Scott's-rule bandwidth — <1 sharper, >1 smoother (default: 1.0)
scaleSizing mode: "area" (equal area, default), "count" (proportional to n), "width" (equal max width)
show_quantilesDraw Q1 / median / Q3 lines inside each violin (default: false)
show_boxRender an inner boxplot (Q1/median/Q3 + 1.5×IQR whiskers) (default: false)
sideSide to draw: "both" (default), "left", or "right" — for split violins
show_pointsOverlay raw observations on top of the violin (default: false)
jitterHorizontal jitter for raw points, as a fraction of half-slot width (default: 0.0)
min_nSkip groups with fewer than min_n observations (default: 3)
kernelKDE kernel: "gaussian" (default), "epanechnikov", or "triangular"
n_evalKDE evaluation resolution per group (default: 80)

Example

[plot]
x = "A1:A50"
y = "B1:B50"

[[layer]]
mark = "violin"
[layer.params]
color = "#333333"
stroke_width = 1.0
alpha = 0.7
scale = "area"
show_quantiles = true
show_box = true

contour

Draws iso-contour lines over a 2D surface defined by x, y, and z values on a regular grid.

Use to visualize the topography of a z variable across x and y. Add filled = true to render a gradient fill behind the lines. Control the number of levels with levels.

Parameters

xx coordinate (regular grid)
yy coordinate (regular grid)
zSurface height at each (x, y) grid point
filledtrue/false — fill regions between contours
lowColor for low z values (used when filled = true)
highColor for high z values (used when filled = true)
levelsNumber of contour lines (default: 8)
strokeContour line color
linewidthContour line width

Example

[plot]

[[layer]]
mark = "contour"
[layer.aes]
x = "A1:A169"
y = "B1:B169"
z = "C1:C169"
[layer.params]
levels = 8
linewidth = 1.2

heatmap

Colors a grid of cells by a value, creating a color-encoded 2D matrix.

Use to visualize a third variable (fill) across a 2D grid of x and y combinations. Typical use: correlation matrices, gene expression, calendar heatmaps.

Parameters

xColumn variable (x-axis categories)
yRow variable (y-axis categories)
fillOptional: column for explicit cell color values
binsGrid resolution for density mode (default: 20)
alphaOpacity (0–1)

Example

[plot]

[[layer]]
mark = "heatmap"
[layer.aes]
x = "A1:A25"
y = "B1:B25"
fill = "C1:C25"

hex

Bins 2D scatter data into hexagonal cells and colors them by point count or a summary statistic.

Use instead of scatter plots when overplotting hides data density. Great for large datasets. Adjust bins to control cell size.

Parameters

xContinuous x values
yContinuous y values
binsNumber of hexagon columns across the panel (default: 15)
alphaOpacity (0–1)

Example

[plot]
x = "A1:A180"
y = "B1:B180"

[[layer]]
mark = "hex"
[layer.params]
bins = 24

tile

Draws filled rectangles (tiles) at each (x, y) position, colored by a fill variable.

Like heatmap but with explicit tile positions and sizes. Use for raster maps, image-like data, or any regular grid visualization.

Parameters

xTile center x position
yTile center y position
fillValue determining tile color
alphaOpacity (0–1)

Example

[plot]

[[layer]]
mark = "tile"
[layer.aes]
x = "A1:A9"
y = "B1:B9"
fill = "C1:C9"

candlestick

Draws OHLC candlestick bars showing open, high, low, and close prices for each time period.

Use for financial price data. Map x to the date/time, and the open, high, low, close aesthetics to the respective price columns. Green candles = close > open.

Parameters

xDate or time period
openOpening price
highHighest price
lowLowest price
closeClosing price
color_upColor for up candles (default: #26a69a)
color_downColor for down candles (default: #ef5350)
widthCandle body width (default: 0.6)
alphaOpacity (0–1)

Example

[plot]
x = "A1:A12"

[[layer]]
mark = "candlestick"
[layer.aes]
open = "B1:B12"
high = "C1:C12"
low = "D1:D12"
close = "E1:E12"

ohlc

Draws OHLC tick marks: a vertical line for the high-low range with left/right ticks for open and close.

A classic financial chart style, more compact than candlesticks. Map x to time, and open, high, low, close aesthetics to the respective price columns.

Parameters

xDate or time period
openOpening price
highHighest price
lowLowest price
closeClosing price
color_upColor for up bars (default: #26a69a)
color_downColor for down bars (default: #ef5350)
widthTick width (default: 0.6)

Example

[plot]
x = "A1:A12"

[[layer]]
mark = "ohlc"
[layer.aes]
open = "B1:B12"
high = "C1:C12"
low = "D1:D12"
close = "E1:E12"

abline

Draws a straight line across the entire plot defined by slope and intercept: y = slope·x + intercept.

Use for regression reference lines, identity lines (slope=1, intercept=0), or any linear benchmark. Set slope and intercept in params — no data mapping needed.

Parameters

slopeRise per unit x
intercepty value at x = 0
strokeLine color
linewidthLine width
linetype"solid", "dashed", "dotted", etc.

Example

[plot]

[coord_cartesian]
xlim = [0, 8]
ylim = [0, 12]

[[layer]]
mark = "abline"
[layer.params]
slope = 1
intercept = 0
color = "#aaaaaa"
linetype = "dashed"

[[layer]]
mark = "abline"
[layer.params]
slope = 1.5
intercept = 0
color = "#e31a1c"
linewidth = 2

annotate

Places a custom text annotation or shape at a specific plot coordinate.

Use to add callout labels, notes, or arrows at exact (x, y) positions. Unlike text mark, annotate works with fixed coordinates rather than data rows.

Parameters

xx position for the label
yy position for the label
labelText string to display
arrowtrue/false — draw a leader line to arrow_x/arrow_y
arrow_xx target of the arrow
arrow_yy target of the arrow
curvetrue/false — bend the leader as a Bezier curve
curvatureBend amount as fraction of chord length (-1..1, default 0.3)
sizeFont size in points
text_colorText and arrow color

Example

[plot]
x = "A1:A4"
y = "B1:B4"

[[layer]]
mark = "points"
[layer.params]
size = 6

[[layer]]
mark = "annotate"
[layer.params]
x = 2
y = 5.2
label = "Point 1"

[[layer]]
mark = "annotate"
[layer.params]
x = 4
y = 7.8
label = "Point 2"

[[layer]]
mark = "annotate"
[layer.params]
x = 6
y = 5.8
label = "Point 3"

[[layer]]
mark = "annotate"
[layer.params]
x = 8
y = 9.8
label = "Point 4"

highlight

Draws a filled rectangle to highlight a region of the plot.

Use to shade a range of x or y values — for example, a date range, a threshold band, or a reference region. Set xmin, xmax, ymin, ymax in params.

Parameters

xminLeft edge of the highlighted region
xmaxRight edge of the highlighted region
yminBottom edge (optional, default: plot min)
ymaxTop edge (optional, default: plot max)

Example

[plot]
x = "A1:A10"
y = "B1:B10"

[[layer]]
mark = "line"

[[layer]]
mark = "highlight"
[layer.params]
xmin = 3
xmax = 6
alpha = 0.2

hline

Draws one or more horizontal reference lines at fixed y values spanning the full width of the plot.

Use to mark thresholds, means, or target values. Set yintercept in params. No data mapping needed — the line spans the full x range automatically.

Parameters

yinterceptThe y value where the line is drawn
strokeOptional: line color
linetypeOptional: solid, dashed, dotted…

Example

[plot]
x = "A1:A8"
y = "B1:B8"

[[layer]]
mark = "points"

[[layer]]
mark = "hline"
[layer.params]
yintercept = 7
color = "#e31a1c"
linewidth = 1

label

Places text labels at (x, y) positions, with an optional filled background box for readability.

Use when labels need to stand out against a busy background. Set background to a color to draw a box behind each label; omit it for transparent labels. Adjust padding to control box size.

Parameters

xx position for each label
yy position for each label
labelText string column
backgroundBox fill color (omit for transparent)
paddingPixels of space around the text (default: 3)
sizeText size in points (default: 11)
text_colorText color
alphaOpacity (0–1)

Example

[plot]
x = "A1:A5"
y = "B1:B5"

[[layer]]
mark = "points"
[layer.params]
size = 5

[[layer]]
mark = "label"
[layer.aes]
label = "C1:C5"
[layer.params]
size = 9
background = "#ffffffcc"
padding = 3

segment

Draws individual line segments from (x, y) to (xend, yend).

Use for connecting pairs of related points, drawing arrows between nodes, or showing directed changes. Each row defines one segment. Supports arrow, color, and linewidth.

Parameters

xStart x coordinate
yStart y coordinate
xendEnd x coordinate
yendEnd y coordinate

Example

[plot]

[[layer]]
mark = "segment"
[layer.aes]
x = "A1:A5"
y = "B1:B5"
xend = "C1:C5"
yend = "D1:D5"

text

Places text strings at (x, y) positions in the plot.

Use to annotate data points with their values or custom labels. Map the label aesthetic to a text column. Supports size, color, angle, hjust, vjust, and nudge_y.

Parameters

xx position
yy position
labelText string column
sizeText size in points (default: 10)
nudge_yVertical offset in data units
text_colorText color
angleRotation in degrees

Example

[plot]
x = "A1:A5"
y = "B1:B5"

[[layer]]
mark = "points"
[layer.params]
size = 5

[[layer]]
mark = "text"
[layer.aes]
label = "C1:C5"
[layer.params]
size = 9
nudge_y = 0.6

vline

Draws one or more vertical reference lines at fixed x values spanning the full height of the plot.

Use to mark time points, category boundaries, or x-axis thresholds. Set xintercept in params. No data mapping needed — the line spans the full y range.

Parameters

xinterceptThe x value where the line is drawn
strokeOptional: line color
linetypeOptional: solid, dashed, dotted…

Example

[plot]
x = "A1:A10"
y = "B1:B10"

[[layer]]
mark = "line"

[[layer]]
mark = "vline"
[layer.params]
xintercept = 5
color = "#e31a1c"
linewidth = 1

sankey

Flow diagram showing directed quantities between named nodes across multiple stages.

Ideal for multi-stage pipelines: supply chains, energy balances, budget allocations, or nutrient cycles. Each row is one directed edge; node positions and ribbon widths are computed automatically.

Parameters

sourceText: name of the origin node
targetText: name of the destination node
valueNumeric: flow magnitude (must be > 0)
fillOptional: per-flow hex colour override

Example

[[layer]]
mark = "sankey"

[layer.aes]
source = "D1:D11"
target = "E1:E11"
value  = "C1:C11"

geo_region

Renders the panel's region outline (country, continent, or world) with optional subdivision boundaries — a data-free base layer for maps.

Use as the background layer inside a coord_geo plot to show the country/continent outline plus state or province subdivisions. No data mapping needed; geometry comes from the bundled geo datasets.

Parameters

fillRegion fill color (default: #f5f5f5)
strokeOuter frame outline color (default: #888888)
stroke_widthFrame outline width in pixels (default: 1)
show_subdivisionsDraw internal subdivision boundaries — states, counties, etc. (default: true)
subdivision_strokeSubdivision line color (default: #bbbbbb)
subdivision_stroke_widthSubdivision line width (default: 0.5)
alphaOpacity (0–1)

Example

[plot]

[coord_geo]
region = "usa"
projection = "albers"

[[layer]]
mark = "geo_region"
[layer.params]
fill = "#f5f5f5"
stroke = "#888888"
show_subdivisions = true

geo_points

Plots a bubble/scatter layer at lon/lat positions, projected through the panel's geographic coordinate system.

Use inside a coord_geo plot to mark cities, events, or any point-located data. Map lon/lat to the longitude and latitude columns; size and fill aesthetics drive per-row dot radius and color.

Parameters

lonLongitude in degrees (-180 to 180)
latLatitude in degrees (-90 to 90)
sizeOptional: per-row dot radius (default: 4)
fillOptional: per-row dot color (default: #1f77b4)
strokeOptional: dot outline color
stroke_widthDot outline width (default: 0)
alphaOpacity (0–1, default: 0.8)

Example

[plot]

[coord_geo]
region = "world"
projection = "equirectangular"

[[layer]]
mark = "geo_region"

[[layer]]
mark = "geo_points"
[layer.aes]
lon = "A1:A20"
lat = "B1:B20"
size = "C1:C20"
[layer.params]
fill = "#1f77b4"
alpha = 0.8

geo_choropleth

Fills subdivision polygons (states, counties, countries) by an aggregated data value, producing a continuous color gradient.

Use inside a coord_geo plot to color regions by a numeric measure. Map id to the subdivision identifier column and value to the metric; the mark aggregates per id and trains a 2-color gradient on the result.

Parameters

idSubdivision identifier (state name, FIPS code, country ISO, etc.)
valueNumeric value to aggregate per subdivision
aggAggregation function: "sum" (default), "mean", "count", "min", "max"
scale_modeColor scale: "linear" (default), "log", or "quantile"
low_colorGradient endpoint for low values (default: #0d0887)
high_colorGradient endpoint for high values (default: #f0f921)
strokeSubdivision outline color (default: #ffffff)
stroke_widthSubdivision outline width (default: 0.5)
missing_fillFill color for subdivisions with no data (default: #e8e8e8)
alphaOpacity (0–1)

Example

[plot]

[coord_geo]
region = "usa"
projection = "albers"

[[layer]]
mark = "geo_choropleth"
[layer.aes]
id = "A1:A50"
value = "B1:B50"
[layer.params]
agg = "sum"
scale_mode = "linear"
low_color = "#0d0887"
high_color = "#f0f921"

linerange

Vertical (or horizontal) line segments from ymin to ymax at each x.

Use for error bars, confidence intervals, or any per-point range. Pair with a points layer for the central estimate.

Parameters

xx position
yminLower endpoint
ymaxUpper endpoint
linewidthLine thickness in pixels
alphaOpacity (0–1)

Example

[plot]
x = "A1:A10"

[[layer]]
mark = "linerange"
[layer.aes]
ymin = "B1:B10"
ymax = "C1:C10"

spline

Smooth interpolating curve through ordered (x, y) points.

Like line but always smooth. Use when the data represents a continuous underlying signal you want emphasized.

Parameters

xOrdered x values
yContinuous y values
strokeOptional: column for multiple series
linewidthLine thickness in pixels

Example

[[layer]]
mark = "spline"

raster

Renders a regular grid of cells, one cell per (x, y) row, colored by a value.

Use for image-like dense grids — density maps, distance fields, anything precomputed to a regular lattice.

Parameters

xGrid x positions
yGrid y positions
fillPer-cell value to encode as color
paletteColor palette name

Example

[[layer]]
mark = "raster"

rect

Filled rectangles defined by (xmin, xmax, ymin, ymax) per row.

Use for shaded regions, calendar heatmaps, or any axis-aligned rectangular highlight.

Parameters

xminLeft edge
xmaxRight edge
yminBottom edge
ymaxTop edge
fillColor (constant or column)
alphaOpacity (0–1)

Example

[[layer]]
mark = "rect"
[layer.aes]
xmin = "A:A"
xmax = "B:B"
ymin = "C:C"
ymax = "D:D"

spoke

Short line segments radiating from each (x, y) point in a given direction.

Use for vector fields, wind charts, or any directional data. Map angle and radius as aesthetics.

Parameters

xOrigin x
yOrigin y
angleDirection in radians
radiusLength of the spoke

Example

[[layer]]
mark = "spoke"
[layer.aes]
angle = "C:C"
radius = "D:D"

arrow

Directional arrow from one point to another, with an arrowhead at the destination.

Use for callouts, flow diagrams, or pointing at specific data points.

Parameters

xStart x
yStart y
xendEnd x
yendEnd y
linewidthStroke width in pixels

Example

[[layer]]
mark = "arrow"
[layer.aes]
xend = "C:C"
yend = "D:D"