Skip to content
  • System
  • Light
  • Dark
  • High contrast

LineChart

020406080Week 1Week 2Week 3Week 4Week 5Week 6
PeriodAssessed
Week 110
Week 225
Week 340
Week 460
Week 572
Week 686
import { LineChart } from '@eekodigital/raster';

<LineChart
  series={[{ name: 'Assessed', data: [10, 25, 40, 60, 72, 86] }]}
  labels={['Week 1', 'Week 2', 'Week 3', 'Week 4', 'Week 5', 'Week 6']}
  aria-label="Assessment progress over time"
/>

Pass multiple series to compare trends. A legend renders automatically.

010203040JanFebMarAprMayJun
PassFailN/A
PeriodPassFailN/A
Jan000
Feb512
Mar1234
Apr2057
May30610
Jun42812
<LineChart
  series={[
    { name: 'Pass', data: [0, 5, 12, 20, 30, 42], color: 'var(--color-success)' },
    { name: 'Fail', data: [0, 1, 3, 5, 6, 8], color: 'var(--color-danger)' },
    { name: 'N/A', data: [0, 2, 4, 7, 10, 12], color: 'var(--color-inactive)' },
  ]}
  labels={['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun']}
  aria-label="Results trend by status"
/>

Set area to fill below the line.

020406080Week 1Week 2Week 3Week 4Week 5Week 6
PeriodAssessed
Week 110
Week 225
Week 340
Week 460
Week 572
Week 686
<LineChart
  series={[{ name: 'Assessed', data: [10, 25, 40, 60, 72, 86] }]}
  labels={['Week 1', 'Week 2', 'Week 3', 'Week 4', 'Week 5', 'Week 6']}
  area
  aria-label="Assessment progress (area)"
/>
  • SVG has role="img" with aria-label
  • Each series is a role="region" with the series name
  • Data points are focusable with series name, label, and value announced
  • Left/Right arrows navigate within a series; Up/Down switch between series
  • A hidden <table> provides the full data for screen readers
  • Legend rendered as HTML (not SVG) for proper semantics
PropTypeDefaultDescription
seriesLineSeries[]Array of { name, data: number[], color? }
labelsstring[]X-axis labels (one per data point)
areabooleanfalseFill below the line
heightnumber200Chart height in pixels
aria-labelstringRequired. Describes the chart.
classNamestring