Skip to content
Data & ChartsPro

Slope Chart

Slope chart for change between columns: slope, rank shift, bump chart, dumbbell and parallel coordinates.

Usage

NPS by area

NPS by product area, 2025 to 2026: 6 items across 2025, 2026. Onboarding 42 → 58; Dashboards 51 → 49; Exports 38 → 47; Billing 29 → 41; Support 55 → 61; Mobile 33 → 44
NPS by product area, 2025 to 2026, data table
name20252026
Onboarding4258
Dashboards5149
Exports3847
Billing2941
Support5561
Mobile3344

Installation

Slope Chart comes with WunderUI Core and Pro, in the package from your plan. See the plans.

Then import what you need:

tsx
import { SlopeChart, SlopeChartProps, SlopeChartVariant } from "@wunderui/react"

Examples

Slope Chart

NPS by area

NPS by product area, 2025 to 2026: 6 items across 2025, 2026. Onboarding 42 → 58; Dashboards 51 → 49; Exports 38 → 47; Billing 29 → 41; Support 55 → 61; Mobile 33 → 44
NPS by product area, 2025 to 2026, data table
name20252026
Onboarding4258
Dashboards5149
Exports3847
Billing2941
Support5561
Mobile3344

Rank Shift

Squad ranking

Squad ranking by score: 6 items across W1, W8. Atlas #4 → #6; Nova #2 → #3; Orbit #1 → #1; Pulse #6 → #2; Quark #5 → #4; Vega #3 → #5
Squad ranking by score, data table
nameW1W8
Atlas4629
Nova6353
Orbit6563
Pulse3358
Quark4040
Vega4932

Bump Chart

Squad ranking

Squad ranking by score: 6 items across W1, W2, W3, W4, W5, W6, W7, W8. Atlas #4 → #6; Nova #2 → #3; Orbit #1 → #1; Pulse #6 → #2; Quark #5 → #4; Vega #3 → #5
Squad ranking by score, data table
nameW1W2W3W4W5W6W7W8
Atlas4660716254464129
Nova6360525233393453
Orbit6551413532446563
Pulse3330344751696458
Quark4050626174554540
Vega4970686757422832

Dumbbell

NPS by area

NPS by product area, 2025 against 2026: 6 items across 2025, 2026. Onboarding 42 → 58; Dashboards 51 → 49; Exports 38 → 47; Billing 29 → 41; Support 55 → 61; Mobile 33 → 44
NPS by product area, 2025 against 2026, data table
name20252026
Onboarding4258
Dashboards5149
Exports3847
Billing2941
Support5561
Mobile3344

Parallel Coordinates

Vendor comparison

Vendors on five measures: 5 items across Price, Speed, Uptime, Support, NPS. WunderUI 29 → 62; Brightline 49 → 41; Kaskade 19 → 22; Helio 39 → 48; Lumen 59 → 35
Vendors on five measures, data table
namePriceSpeedUptimeSupportNPS
WunderUI29921004.862
Brightline497899.94.141
Kaskade196499.53.622
Helio39851004.448
Lumen597099.73.935

State – Loading

NPS by area

NPS by product area, 2025 to 2026: 6 items across 2025, 2026. Onboarding 42 → 58; Dashboards 51 → 49; Exports 38 → 47; Billing 29 → 41; Support 55 → 61; Mobile 33 → 44

In context

How the component is used inside real screens — the same compositions as the Usage section of the Figma page.

NPS by Area

Two years side by side with the biggest moves.

NPS by area

NPS by product area: 6 items across 2025, 2026. Onboarding 42 → 58; Dashboards 51 → 49; Exports 38 → 47; Billing 29 → 41; Support 55 → 61; Mobile 33 → 44
NPS by product area, data table
name20252026
Onboarding4258
Dashboards5149
Exports3847
Billing2941
Support5561
Mobile3344

Biggest moves

NPS change against last year

  • Onboarding
    +16
  • Billing
    +12
  • Mobile
    +11
  • Dashboards
    −2

API Reference

PropTypeDefault
variant"slope-chart" | "rank-shift" | "bump-chart" | "dumbbell" | "parallel-coordinates""slope-chart"
data · index · seriesrows · string · columns—
rankOrder"desc" | "asc""desc"
colorsChartColor[]—
state"ready" | "loading" | "empty" | "error""ready"
hiddenSeries · animate · animationKeystring[] · boolean · string | number—
data*readonly ChartDatum[]—
index*string—
series*readonly ChartSeries[]—
activeIndexnumber | null—
animateboolean—
animationKeystring | number—
classNamestring—
defaultActiveIndexnumber | null—
descriptionstring—
heightnumber—
hiddenSeriesreadonly string[]—
labelstring—
onActiveIndexChange(index: number | null) => void—
onRetry() => void—
valueFormatterChartValueFormatter—
widthnumber—

Theming

The CSS variables this component reads. Set one on any wrapper to restyle everything inside it. More in Theming.

VariableUsed forDefault
Color
Stroke#F1F5F7dark #323438
Stroke#D9E1E7dark #323438
Value#FFFFFFdark #1C1D20
Fill#000000dark #FFFFFF
Fill#454648dark #D1D1D1
Fill#6E6E70dark #A2A3A3
Motion
Duration250ms
Easingcubic-bezier(0.22, 1, 0.36, 1)