scatter

Configuration Structure

scatter: {
jitter: { ... },
enabled: boolean,
x: number,
y: number,
distributed: boolean,
maxPoints: number,
}

jitter

Spread overlapping points apart so dense clusters and stacked observations stay readable. One engine covers two cases:

  • Overplotting: ordinary { x, y } points receive a small offset so points that land on nearly the same coordinate fan out.
  • Strip plot: supply each band as { x: 'Category', y: [v1, v2, ...] } and the values scatter horizontally within that category.

Offsets are measured in axis units and are deterministic, so the layout is stable across re-renders and safe for server-side rendering. The offset only moves the drawn marker: the tooltip and the underlying data keep their exact values.

plotOptions: {
  scatter: {
    jitter: {
      enabled: true,
      x: 0.3,
      y: 0.5
    }
  }
}

enabled

scatter.jitter.enabled
Default: false

Turn jitter on. Off by default, so existing scatter charts are unchanged.

x

scatter.jitter.x
Default: 0

Maximum horizontal offset, in x-axis units. On a category axis, 1 equals one full category step. Keep it small relative to the axis range so the spread does not misrepresent where the points actually sit.

y

scatter.jitter.y
Default: 0

Maximum vertical offset, in y-axis units. Leave at 0 for strip plots, where the spread should stay horizontal.

distributed

scatter.jitter.distributed
Default: false

Colour each band separately by its position, so a single-series strip plot shows a distinct colour per category.

maxPoints

scatter.jitter.maxPoints
Default: 5000

Cap on the number of points drawn per band. Bands with more observations are stride-thinned down to this count to keep rendering fast.