Rank Chart
Positions over time with rank 1 on top: one line per series at real check times, gaps for checks without a rank, notes in the tooltip. Drawn as SVG, rendered on the server and themed by the design tokens.
Part of @tectra-ng/charts (npm install @tectra-ng/charts, also included in tectra-ng).
Basic
Pass series with points of { time, rank }. Rank 1 is on top, null leaves a gap (a check without a position), and rankLabel captions the rank in the tooltip. Hover a point or use the arrow keys.
| Category | Position |
|---|---|
| runfast.example, Mar 2, 2026, 9:00 AM | 9 |
| trailhub.example, Mar 2, 2026, 9:00 AM | 3 |
| stridewear.example, Mar 2, 2026, 9:00 AM | 14 |
| runfast.example, Mar 3, 2026, 9:00 AM | 8 |
| trailhub.example, Mar 3, 2026, 9:00 AM | 3 |
| stridewear.example, Mar 3, 2026, 9:00 AM | 13 |
| runfast.example, Mar 4, 2026, 9:00 AM | 8 |
| trailhub.example, Mar 4, 2026, 9:00 AM | 4 |
| runfast.example, Mar 5, 2026, 9:00 AM | 6 |
| trailhub.example, Mar 5, 2026, 9:00 AM | 4 |
| runfast.example, Mar 6, 2026, 9:00 AM | 5 |
| trailhub.example, Mar 6, 2026, 9:00 AM | 4 |
| stridewear.example, Mar 6, 2026, 9:00 AM | 11 |
| runfast.example, Mar 7, 2026, 9:00 AM | 5 |
| trailhub.example, Mar 7, 2026, 9:00 AM | 6 |
| stridewear.example, Mar 7, 2026, 9:00 AM | 9 |
| runfast.example, Mar 8, 2026, 9:00 AM | 4 |
| trailhub.example, Mar 8, 2026, 9:00 AM | 7 |
| stridewear.example, Mar 8, 2026, 9:00 AM | 9 |
| runfast.example, Mar 9, 2026, 9:00 AM | 3 |
| trailhub.example, Mar 9, 2026, 9:00 AM | 7 |
| stridewear.example, Mar 9, 2026, 9:00 AM | 8 |
| runfast.example, Mar 10, 2026, 9:00 AM | 3 |
| trailhub.example, Mar 10, 2026, 9:00 AM | 9 |
| stridewear.example, Mar 10, 2026, 9:00 AM | 6 |
| runfast.example, Mar 11, 2026, 9:00 AM | 2 |
| trailhub.example, Mar 11, 2026, 9:00 AM | 8 |
| stridewear.example, Mar 11, 2026, 9:00 AM | 6 |
| runfast.example, Mar 12, 2026, 9:00 AM | 2 |
| trailhub.example, Mar 12, 2026, 9:00 AM | 8 |
| stridewear.example, Mar 12, 2026, 9:00 AM | 5 |
| runfast.example, Mar 13, 2026, 9:00 AM | 1 |
| trailhub.example, Mar 13, 2026, 9:00 AM | 10 |
| stridewear.example, Mar 13, 2026, 9:00 AM | 5 |
| runfast.example, Mar 14, 2026, 9:00 AM | 1 |
| trailhub.example, Mar 14, 2026, 9:00 AM | 11 |
| stridewear.example, Mar 14, 2026, 9:00 AM | 4 |
| runfast.example, Mar 15, 2026, 9:00 AM | 1 |
| trailhub.example, Mar 15, 2026, 9:00 AM | 12 |
| stridewear.example, Mar 15, 2026, 9:00 AM | 3 |
Notes
A point's note shows under the rank in the tooltip. Points sit at their real check times, so uneven checks keep their spacing; pointClick reports the clicked check.
| Category | Position |
|---|---|
| /pricing, Apr 1, 2026, 8:00 AM | 7 |
| /pricing, Apr 1, 2026, 8:00 PM | 6 |
| /pricing, Apr 3, 2026, 8:00 AM | 6 (Title rewritten) |
| /pricing, Apr 4, 2026, 8:00 AM | 4 |
| /pricing, Apr 4, 2026, 2:00 PM | 3 |
| /pricing, Apr 8, 2026, 8:00 AM | 5 (Page was down for an hour) |
| /pricing, Apr 9, 2026, 8:00 AM | 2 |
| /pricing, Apr 10, 2026, 8:00 AM | 1 (Featured snippet) |
Legend
showLegend adds a legend that hides and shows series (seriesToggle); legendPosition, legendAlign and legendVariant place and style it.
| Category | Rank |
|---|---|
| angular charts, May 4, 2026, 9:00 AM | 3 |
| svg charts, May 4, 2026, 9:00 AM | 9 |
| dashboard kit, May 4, 2026, 9:00 AM | 12 |
| design tokens, May 4, 2026, 9:00 AM | 12 |
| ui kit, May 4, 2026, 9:00 AM | 13 |
| angular charts, May 5, 2026, 9:00 AM | 4 |
| svg charts, May 5, 2026, 9:00 AM | 9 |
| dashboard kit, May 5, 2026, 9:00 AM | 11 |
| design tokens, May 5, 2026, 9:00 AM | 11 |
| ui kit, May 5, 2026, 9:00 AM | 12 |
| angular charts, May 6, 2026, 9:00 AM | 6 |
| svg charts, May 6, 2026, 9:00 AM | 9 |
| dashboard kit, May 6, 2026, 9:00 AM | 9 |
| design tokens, May 6, 2026, 9:00 AM | 10 |
| ui kit, May 6, 2026, 9:00 AM | 12 |
| angular charts, May 7, 2026, 9:00 AM | 6 |
| svg charts, May 7, 2026, 9:00 AM | 8 |
| dashboard kit, May 7, 2026, 9:00 AM | 8 |
| design tokens, May 7, 2026, 9:00 AM | 9 |
| ui kit, May 7, 2026, 9:00 AM | 13 |
| angular charts, May 8, 2026, 9:00 AM | 6 |
| svg charts, May 8, 2026, 9:00 AM | 6 |
| dashboard kit, May 8, 2026, 9:00 AM | 7 |
| design tokens, May 8, 2026, 9:00 AM | 9 |
| ui kit, May 8, 2026, 9:00 AM | 14 |
| angular charts, May 9, 2026, 9:00 AM | 5 |
| svg charts, May 9, 2026, 9:00 AM | 5 |
| dashboard kit, May 9, 2026, 9:00 AM | 6 |
| design tokens, May 9, 2026, 9:00 AM | 10 |
| ui kit, May 9, 2026, 9:00 AM | 16 |
| angular charts, May 10, 2026, 9:00 AM | 3 |
| svg charts, May 10, 2026, 9:00 AM | 4 |
| dashboard kit, May 10, 2026, 9:00 AM | 6 |
| design tokens, May 10, 2026, 9:00 AM | 11 |
| ui kit, May 10, 2026, 9:00 AM | 17 |
| angular charts, May 11, 2026, 9:00 AM | 2 |
| svg charts, May 11, 2026, 9:00 AM | 3 |
| dashboard kit, May 11, 2026, 9:00 AM | 7 |
| design tokens, May 11, 2026, 9:00 AM | 13 |
| ui kit, May 11, 2026, 9:00 AM | 18 |
| angular charts, May 12, 2026, 9:00 AM | 1 |
| svg charts, May 12, 2026, 9:00 AM | 3 |
| dashboard kit, May 12, 2026, 9:00 AM | 8 |
| design tokens, May 12, 2026, 9:00 AM | 14 |
| ui kit, May 12, 2026, 9:00 AM | 18 |
| angular charts, May 13, 2026, 9:00 AM | 1 |
| svg charts, May 13, 2026, 9:00 AM | 4 |
| dashboard kit, May 13, 2026, 9:00 AM | 10 |
| design tokens, May 13, 2026, 9:00 AM | 15 |
| ui kit, May 13, 2026, 9:00 AM | 17 |
Depth
maxRank sets the depth of the axis: ticks go by 5 up to 20 and by 10 deeper. Ranks below it sit on the bottom line; the tooltip still shows the real rank.
| Category | Rank |
|---|---|
| blog.example/guide, Jan 5, 2026, 9:00 AM | 68 |
| blog.example/guide, Jan 12, 2026, 9:00 AM | 54 |
| blog.example/guide, Jan 19, 2026, 9:00 AM | 47 |
| blog.example/guide, Jan 26, 2026, 9:00 AM | 41 |
| blog.example/guide, Feb 2, 2026, 9:00 AM | 33 |
| blog.example/guide, Feb 9, 2026, 9:00 AM | 28 |
| blog.example/guide, Feb 16, 2026, 9:00 AM | 22 |
| blog.example/guide, Feb 23, 2026, 9:00 AM | 19 |
| blog.example/guide, Mar 2, 2026, 9:00 AM | 14 |
| blog.example/guide, Mar 9, 2026, 9:00 AM | 11 |
| blog.example/guide, Mar 16, 2026, 9:00 AM | 9 |
| blog.example/guide, Mar 23, 2026, 9:00 AM | 7 |
Own colors
Without color a series takes one of twelve line colours by its index; rankLineColor(index) gives the same colour for your own legend or table. Pass color to pick your own.
| Category | Rank |
|---|---|
| ours.example, Jun 1, 2026, 9:00 AM | 1 |
| rival-one.example, Jun 1, 2026, 9:00 AM | 4 |
| rival-two.example, Jun 1, 2026, 9:00 AM | 7 |
| ours.example, Jun 2, 2026, 9:00 AM | 2 |
| rival-one.example, Jun 2, 2026, 9:00 AM | 5 |
| rival-two.example, Jun 2, 2026, 9:00 AM | 5 |
| ours.example, Jun 3, 2026, 9:00 AM | 3 |
| rival-one.example, Jun 3, 2026, 9:00 AM | 3 |
| rival-two.example, Jun 3, 2026, 9:00 AM | 6 |
| ours.example, Jun 4, 2026, 9:00 AM | 1 |
| rival-one.example, Jun 4, 2026, 9:00 AM | 4 |
| rival-two.example, Jun 4, 2026, 9:00 AM | 7 |
| ours.example, Jun 5, 2026, 9:00 AM | 2 |
| rival-one.example, Jun 5, 2026, 9:00 AM | 5 |
| rival-two.example, Jun 5, 2026, 9:00 AM | 5 |
| ours.example, Jun 6, 2026, 9:00 AM | 3 |
| rival-one.example, Jun 6, 2026, 9:00 AM | 3 |
| rival-two.example, Jun 6, 2026, 9:00 AM | 6 |
| ours.example, Jun 7, 2026, 9:00 AM | 1 |
| rival-one.example, Jun 7, 2026, 9:00 AM | 4 |
| rival-two.example, Jun 7, 2026, 9:00 AM | 7 |
| ours.example, Jun 8, 2026, 9:00 AM | 2 |
| rival-one.example, Jun 8, 2026, 9:00 AM | 5 |
| rival-two.example, Jun 8, 2026, 9:00 AM | 5 |
Loading and empty
loading shows a skeleton of the same size; series without any ranked check show "No data".
Design tokens
dt sets the tokens of one chart — the rankLine group of the chart tokens: line width, marker sizes and the twelve series colours.
| Category | Rank |
|---|---|
| alpha.example, Aug 3, 2026, 9:00 AM | 5 |
| beta.example, Aug 3, 2026, 9:00 AM | 2 |
| alpha.example, Aug 4, 2026, 9:00 AM | 4 |
| beta.example, Aug 4, 2026, 9:00 AM | 3 |
| alpha.example, Aug 5, 2026, 9:00 AM | 4 |
| beta.example, Aug 5, 2026, 9:00 AM | 3 |
| alpha.example, Aug 6, 2026, 9:00 AM | 3 |
| beta.example, Aug 6, 2026, 9:00 AM | 4 |
| alpha.example, Aug 7, 2026, 9:00 AM | 2 |
| beta.example, Aug 7, 2026, 9:00 AM | 6 |
| alpha.example, Aug 8, 2026, 9:00 AM | 2 |
| beta.example, Aug 8, 2026, 9:00 AM | 7 |
Pass through
pt adds classes and styles to the parts: root, plot, svg, grid, axis, line, marker, legend, legendItem, tooltip, empty, skeleton.
| Category | Rank |
|---|---|
| forecast, Sep 7, 2026, 9:00 AM | 8 |
| forecast, Sep 8, 2026, 9:00 AM | 7 |
| forecast, Sep 9, 2026, 9:00 AM | 6 |
| forecast, Sep 10, 2026, 9:00 AM | 6 |
| forecast, Sep 11, 2026, 9:00 AM | 5 |
| forecast, Sep 12, 2026, 9:00 AM | 4 |
| forecast, Sep 13, 2026, 9:00 AM | 4 |