Skip to content

Polyline ​

A Polyline draws a series of connected line segments through a set of [x, y] points. The renderer property selects the curve algorithm the points are drawn with. Thirteen are built in — linear, spline, basis, bumpX, bumpY, cardinal, catmullRom, monotoneX, monotoneY, natural, step, stepBefore and stepAfter — and a custom render function can be passed in place of a name. Polylines back line charts, sparklines, area boundaries and any data path through connected points.

Example ​

The demo below shows the same set of points rendered with different renderer modes.

Usage ​

ts
import {
    createPolyline,
} from '@ripl/web';

const polyline = createPolyline({
    stroke: '#3a86ff',
    lineWidth: 2,
    points: [[50, 150], [100, 50], [200, 180], [300, 80], [400, 120]],
});

Properties ​

The polyline is defined by points (an array of [x, y] tuples) and an optional renderer mode (default: 'linear').

NOTE

For the full property list, see the Polyline API Reference.

Renderer Modes ​

The renderer property controls how points are connected. Built-in options include 'linear', 'spline', 'basis', 'bumpX', 'bumpY', 'cardinal', 'catmullRom', 'monotoneX', 'monotoneY', 'natural', 'step', 'stepBefore', and 'stepAfter'. Use the interactive demo above to preview each mode.

ts
const smoothLine = createPolyline({
    stroke: '#3a86ff',
    lineWidth: 2,
    points: [[50, 150], [100, 50], [200, 180], [300, 80]],
    renderer: 'spline',
});

Custom Renderer ​

You can also pass a custom render function:

ts
const custom = createPolyline({
    stroke: '#3a86ff',
    lineWidth: 2,
    points: myPoints,
    renderer: (context, path, points) => {
        // Custom drawing logic using the path API
        path.moveTo(points[0][0], points[0][1]);
        for (let i = 1; i < points.length; i++) {
            path.lineTo(points[i][0], points[i][1]);
        }
    },
});