Charts · Distributions & comparisons
SlopeChart Patients seen, 2024 to 2025 Patients seen, 2024 to 2025
Patients seen, 2024 to 2025 clinic 2024 2025 change Ashford 59 66 +7 Brook Lane 24 30 +6 Castlegate 33 47 +14 Dunmore 23 16 −7 Eastwick 52 60 +8 Fairholm 28 43 +15 Glenbrook 32 40 +8 Hollins 33 25 −8 Ivybridge 25 31 +6 Juniper Row 25 32 +7
Patients seen, 2024 to 2025 Patients seen, 2024 to 2025
Patients seen, 2024 to 2025 clinic 2024 2025 change Ashford 59 66 +7 Brook Lane 24 30 +6 Castlegate 33 47 +14 Dunmore 23 16 −7 Eastwick 52 60 +8 Fairholm 28 43 +15 Glenbrook 32 40 +8 Hollins 33 25 −8 Ivybridge 25 31 +6 Juniper Row 25 32 +7
mode="precision" Patients seen, 2024 to 2025 Patients seen, 2024 to 2025
Patients seen, 2024 to 2025 clinic 2024 2025 change Ashford 59 66 +7 Brook Lane 24 30 +6 Castlegate 33 47 +14 Dunmore 23 16 −7 Eastwick 52 60 +8 Fairholm 28 43 +15 Glenbrook 32 40 +8 Hollins 33 25 −8 Ivybridge 25 31 +6 Juniper Row 25 32 +7
substrate="green" Patients seen, 2024 to 2025 Patients seen, 2024 to 2025
Patients seen, 2024 to 2025 clinic 2024 2025 change Ashford 59 66 +7 Brook Lane 24 30 +6 Castlegate 33 47 +14 Dunmore 23 16 −7 Eastwick 52 60 +8 Fairholm 28 43 +15 Glenbrook 32 40 +8 Hollins 33 25 −8 Ivybridge 25 31 +6 Juniper Row 25 32 +7
ground="cyanotype" The chart above, in each framework. Pick a framework once and every example on the site follows it.
React Vue Angular Reflex
npm install @silverpoint/react @silverpoint/grounds @silverpoint/fontsimport '@silverpoint/fonts/fonts.css';
import '@silverpoint/grounds/styles.css';
import { SlopeChart } from '@silverpoint/react/slope-chart';
const data = [
{ clinic: 'Ashford', y2024: 59, y2025: 66 },
{ clinic: 'Brook Lane', y2024: 24, y2025: 30 },
{ clinic: 'Castlegate', y2024: 33, y2025: 47 },
{ clinic: 'Dunmore', y2024: 23, y2025: 16 },
{ clinic: 'Eastwick', y2024: 52, y2025: 60 },
{ clinic: 'Fairholm', y2024: 28, y2025: 43 },
{ clinic: 'Glenbrook', y2024: 32, y2025: 40 },
{ clinic: 'Hollins', y2024: 33, y2025: 25 },
{ clinic: 'Ivybridge', y2024: 25, y2025: 31 },
{ clinic: 'Juniper Row', y2024: 25, y2025: 32 },
];
export default function App() {
return (
<div style={{ width: 480 }}>
<SlopeChart
data={data}
labelKey="clinic"
startKey="y2024"
endKey="y2025"
names={['2024', '2025']}
title="Patients seen, 2024 to 2025"
/>
</div>
);
}npm install @silverpoint/vue @silverpoint/grounds @silverpoint/fonts<script setup lang="ts">
import '@silverpoint/fonts/fonts.css';
import '@silverpoint/grounds/styles.css';
import { SpSlopeChart } from '@silverpoint/vue/slope-chart';
const data = [
{ clinic: 'Ashford', y2024: 59, y2025: 66 },
{ clinic: 'Brook Lane', y2024: 24, y2025: 30 },
{ clinic: 'Castlegate', y2024: 33, y2025: 47 },
{ clinic: 'Dunmore', y2024: 23, y2025: 16 },
{ clinic: 'Eastwick', y2024: 52, y2025: 60 },
{ clinic: 'Fairholm', y2024: 28, y2025: 43 },
{ clinic: 'Glenbrook', y2024: 32, y2025: 40 },
{ clinic: 'Hollins', y2024: 33, y2025: 25 },
{ clinic: 'Ivybridge', y2024: 25, y2025: 31 },
{ clinic: 'Juniper Row', y2024: 25, y2025: 32 },
];
</script>
<template>
<div style="width: 480px">
<SpSlopeChart
:data="data"
label-key="clinic"
start-key="y2024"
end-key="y2025"
:names="['2024', '2025']"
title="Patients seen, 2024 to 2025"
/>
</div>
</template>npm install @silverpoint/angular @silverpoint/grounds @silverpoint/fonts// src/styles.css:
// @import '@silverpoint/fonts/fonts.css';
// @import '@silverpoint/grounds/styles.css';
import { Component } from '@angular/core';
import { SpSlopeChart } from '@silverpoint/angular/slope-chart';
@Component({
selector: 'app-root',
imports: [SpSlopeChart],
template: `
<div style="width: 480px">
<sp-slope-chart
[data]="data"
labelKey="clinic"
startKey="y2024"
endKey="y2025"
[names]="['2024', '2025']"
title="Patients seen, 2024 to 2025"
/>
</div>
`,
})
export class App {
protected readonly data = [
{ clinic: 'Ashford', y2024: 59, y2025: 66 },
{ clinic: 'Brook Lane', y2024: 24, y2025: 30 },
{ clinic: 'Castlegate', y2024: 33, y2025: 47 },
{ clinic: 'Dunmore', y2024: 23, y2025: 16 },
{ clinic: 'Eastwick', y2024: 52, y2025: 60 },
{ clinic: 'Fairholm', y2024: 28, y2025: 43 },
{ clinic: 'Glenbrook', y2024: 32, y2025: 40 },
{ clinic: 'Hollins', y2024: 33, y2025: 25 },
{ clinic: 'Ivybridge', y2024: 25, y2025: 31 },
{ clinic: 'Juniper Row', y2024: 25, y2025: 32 },
];
}pip install reflex-silverpoint-reactimport reflex as rx
from reflex_silverpoint_react import slope_chart
DATA = [
{"clinic": "Ashford", "y2024": 59, "y2025": 66},
{"clinic": "Brook Lane", "y2024": 24, "y2025": 30},
{"clinic": "Castlegate", "y2024": 33, "y2025": 47},
{"clinic": "Dunmore", "y2024": 23, "y2025": 16},
{"clinic": "Eastwick", "y2024": 52, "y2025": 60},
{"clinic": "Fairholm", "y2024": 28, "y2025": 43},
{"clinic": "Glenbrook", "y2024": 32, "y2025": 40},
{"clinic": "Hollins", "y2024": 33, "y2025": 25},
{"clinic": "Ivybridge", "y2024": 25, "y2025": 31},
{"clinic": "Juniper Row", "y2024": 25, "y2025": 32},
]
def index() -> rx.Component:
return rx.box(
slope_chart(
data=DATA,
label_key="clinic",
start_key="y2024",
end_key="y2025",
names=["2024", "2025"],
title="Patients seen, 2024 to 2025",
),
width="480px",
)
app = rx.App()
app.add_page(index)Each chart has its own subpath, so a bundle only carries the charts it uses. Every adapter also exports every chart from its barrel.
Framework Import React import { SlopeChart } from '@silverpoint/react/slope-chart';Vue import { SpSlopeChart } from '@silverpoint/vue/slope-chart';Angular import { SpSlopeChart } from '@silverpoint/angular/slope-chart'; // <sp-slope-chart>Reflex from reflex_silverpoint_react import slope_chart
The props SlopeChart adds to the ones every chart takes. Accessor props (…Key, keys, names) name fields of your rows and are ignored without data.
React / Angular Vue Reflex Type Description labelKeylabel-keylabel_keyAccessor<string>— startKeystart-keystart_keyAccessor<number | null | undefined>— endKeyend-keyend_keyAccessor<number | null | undefined>— namesnamesnamesreadonly [string, string]Titles of the two periods; ['start', 'end'] by default.
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 / Angular Vue Reflex Type Description 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—
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 } }.
Framework Active item Selection Custom readout React onActiveChangeonSelecttooltip={(item, readout) => …}Vue @active-change@select<template #tooltip>Angular (activeChange)(select)<ng-template spTooltip>Reflex on_active_changeon_selecttooltip=tooltip_template(…)
Interaction and readouts → Report it
Found something wrong with SlopeChart ? Open an issue on GitHub — the form comes pre-filled with the chart and the version.