Skip to content
silverpoint
Documentation menu

Charts · Distributions & comparisons

IntervalChart

Floating bars from start to end on lanes. Family: Distributions & comparisons · chart 45 of 60.
Crew scheduleCrew schedule
Crew schedule
taskcrewfromtolength
SignageNorth crew2026-03-152026-03-216
GradingNorth crew2026-02-172026-03-0718
SignageNorth crew2026-03-092026-03-3122
DrainageNorth crew2026-02-192026-02-245
GradingNorth crew2026-02-212026-03-1623
FencingSouth crew2026-02-202026-03-0513
PavingSouth crew2026-01-022026-01-1614
PavingSouth crew2026-03-032026-03-096
FormworkSouth crew2026-03-062026-03-104
LightingBridge team2026-01-262026-02-0813
DrainageBridge team2026-02-262026-03-1618
FencingBridge team2026-02-042026-02-1915
GradingBridge team2026-03-142026-03-3117
FormworkSurvey2026-03-222026-03-319
SignageSurvey2026-02-212026-03-0815
GradingSurvey2026-03-172026-03-269
Crew scheduleCrew schedule
Crew schedule
taskcrewfromtolength
SignageNorth crew2026-03-152026-03-216
GradingNorth crew2026-02-172026-03-0718
SignageNorth crew2026-03-092026-03-3122
DrainageNorth crew2026-02-192026-02-245
GradingNorth crew2026-02-212026-03-1623
FencingSouth crew2026-02-202026-03-0513
PavingSouth crew2026-01-022026-01-1614
PavingSouth crew2026-03-032026-03-096
FormworkSouth crew2026-03-062026-03-104
LightingBridge team2026-01-262026-02-0813
DrainageBridge team2026-02-262026-03-1618
FencingBridge team2026-02-042026-02-1915
GradingBridge team2026-03-142026-03-3117
FormworkSurvey2026-03-222026-03-319
SignageSurvey2026-02-212026-03-0815
GradingSurvey2026-03-172026-03-269
mode="precision"
Crew scheduleCrew schedule
Crew schedule
taskcrewfromtolength
SignageNorth crew2026-03-152026-03-216
GradingNorth crew2026-02-172026-03-0718
SignageNorth crew2026-03-092026-03-3122
DrainageNorth crew2026-02-192026-02-245
GradingNorth crew2026-02-212026-03-1623
FencingSouth crew2026-02-202026-03-0513
PavingSouth crew2026-01-022026-01-1614
PavingSouth crew2026-03-032026-03-096
FormworkSouth crew2026-03-062026-03-104
LightingBridge team2026-01-262026-02-0813
DrainageBridge team2026-02-262026-03-1618
FencingBridge team2026-02-042026-02-1915
GradingBridge team2026-03-142026-03-3117
FormworkSurvey2026-03-222026-03-319
SignageSurvey2026-02-212026-03-0815
GradingSurvey2026-03-172026-03-269
substrate="green"
Crew scheduleCrew schedule
Crew schedule
taskcrewfromtolength
SignageNorth crew2026-03-152026-03-216
GradingNorth crew2026-02-172026-03-0718
SignageNorth crew2026-03-092026-03-3122
DrainageNorth crew2026-02-192026-02-245
GradingNorth crew2026-02-212026-03-1623
FencingSouth crew2026-02-202026-03-0513
PavingSouth crew2026-01-022026-01-1614
PavingSouth crew2026-03-032026-03-096
FormworkSouth crew2026-03-062026-03-104
LightingBridge team2026-01-262026-02-0813
DrainageBridge team2026-02-262026-03-1618
FencingBridge team2026-02-042026-02-1915
GradingBridge team2026-03-142026-03-3117
FormworkSurvey2026-03-222026-03-319
SignageSurvey2026-02-212026-03-0815
GradingSurvey2026-03-172026-03-269
ground="cyanotype"

Example

The chart above, in each framework. Pick a framework once and every example on the site follows it. `axis="date"` reads ISO `YYYY-MM-DD` days in UTC.

shell
npm install @silverpoint/react @silverpoint/grounds @silverpoint/fonts
tsx
import '@silverpoint/fonts/fonts.css';
import '@silverpoint/grounds/styles.css';
import { IntervalChart } from '@silverpoint/react/interval-chart';

const data = [
  { crew: 'North crew', task: 'Signage', from: '2026-03-15', to: '2026-03-21' },
  { crew: 'North crew', task: 'Grading', from: '2026-02-17', to: '2026-03-07' },
  { crew: 'North crew', task: 'Signage', from: '2026-03-09', to: '2026-03-31' },
  { crew: 'North crew', task: 'Drainage', from: '2026-02-19', to: '2026-02-24' },
  { crew: 'North crew', task: 'Grading', from: '2026-02-21', to: '2026-03-16' },
  { crew: 'South crew', task: 'Fencing', from: '2026-02-20', to: '2026-03-05' },
  { crew: 'South crew', task: 'Paving', from: '2026-01-02', to: '2026-01-16' },
  { crew: 'South crew', task: 'Paving', from: '2026-03-03', to: '2026-03-09' },
  { crew: 'South crew', task: 'Formwork', from: '2026-03-06', to: '2026-03-10' },
  { crew: 'Bridge team', task: 'Lighting', from: '2026-01-26', to: '2026-02-08' },
  { crew: 'Bridge team', task: 'Drainage', from: '2026-02-26', to: '2026-03-16' },
  { crew: 'Bridge team', task: 'Fencing', from: '2026-02-04', to: '2026-02-19' },
  // … 4 more rows of the same shape
];

export default function App() {
  return (
    <div style={{ width: 480 }}>
      <IntervalChart
        data={data}
        laneKey="crew"
        startKey="from"
        endKey="to"
        labelKey="task"
        axis="date"
        title="Crew schedule"
      />
    </div>
  );
}

Import

Each chart has its own subpath, so a bundle only carries the charts it uses. Every adapter also exports every chart from its barrel.

FrameworkImport
Reactimport { IntervalChart } from '@silverpoint/react/interval-chart';
Vueimport { SpIntervalChart } from '@silverpoint/vue/interval-chart';
Angularimport { SpIntervalChart } from '@silverpoint/angular/interval-chart'; // <sp-interval-chart>
Reflexfrom reflex_silverpoint_react import interval_chart

Props

The props IntervalChart adds to the ones every chart takes. Accessor props (…Key, keys, names) name fields of your rows and are ignored without data.

React / AngularVueReflexTypeDescription
laneKeylane-keylane_keyAccessor<string>—
startKeystart-keystart_keyAccessor<number | string | null | undefined>—
endKeyend-keyend_keyAccessor<number | string | null | undefined>—
labelKeylabel-keylabel_keyAccessor<string | null | undefined>—
axisaxisaxis'number' | 'date'date reads ISO YYYY-MM-DD days in UTC; number by default.

Common props

Every chart also takes these. Framework conventions: camelCase in React and Angular, kebab-case in Vue templates, snake_case in Reflex. Read more about them.

Show the 22 common props
React / AngularVueReflexTypeDescription
datadatadatareadonly Datum[]Rows to draw. If omitted, the demo dataset is rendered (REQ-093) and the accessor props (…_key, keys, names) are ignored.
groundgroundgroundGroundRefStyle ground: silverpoint or cyanotype, or a ground object. Defaults to the app provider's, or silverpoint.
substratesubstratesubstrateSubstrateNamePrepared substrate within the ground (REQ-046).
modemodemodeInkModeink by default; precision disables inking (REQ-021).
seedseedseedSeedSeed. If omitted, it is derived from id stably (REQ-003).
idididstringStable identifier. If omitted, it is generated deterministically.
heightheightheightnumberHeight of the drawing area in px. Width is the container's unless pinned.
widthwidthwidthnumber—
chromechromechrome'card' | 'bare'card draws the full frame; bare only the drawing area (REQ-095).
hatchFillhatch-fillhatch_fill'tile' | 'per-shape'How areas are filled (REQ-029).
titletitletitlestring—
badgebadgebadgestring—
valuevaluevaluestring | number—
unitunitunitstring—
footerLeftfooter-leftfooter_leftstring—
footerRightfooter-rightfooter_rightstring—
labellabellabelstringAccessible name. If omitted, it is derived from title (REQ-120).
descriptiondescriptiondescriptionstringLong description for screen readers (REQ-120).
dataTabledata-tabledata_table'visible' | 'hidden' | 'none'Tabular alternative; hidden leaves it for assistive technology only (REQ-121).
localelocalelocalestring—
numberFormatnumber-formatnumber_formatIntl.NumberFormatOptions—
classNameclass-nameclass_namestring—

Events

Pointer and keyboard exploration are built in. The item under the pointer or focus is reported, and a click, Enter or Space selects it. The item is { seriesKey, index, datum, value, point: { x, y } }.

FrameworkActive itemSelectionCustom readout
ReactonActiveChangeonSelecttooltip={(item, readout) => …}
Vue@active-change@select<template #tooltip>
Angular(activeChange)(select)<ng-template spTooltip>
Reflexon_active_changeon_selecttooltip=tooltip_template(…)
Interaction and readouts →
Report it
Found something wrong with IntervalChart? Open an issue on GitHub — the form comes pre-filled with the chart and the version.