Skip to content
silverpoint
Documentation menu

Charts · Distributions & comparisons

LollipopChart

A stem from the baseline and a head at the value. Family: Distributions & comparisons · chart 40 of 60.
Loans by branchLoans by branch
Loans by branch
branchloans
Northgate2,969
Riverside Commons2,695
Old Mill6,096
Harbour View Annex7,785
Elm Street3,499
Quarry Hill7,698
Saint Brigid Reading Rooms7,279
Westfield3,294
Lantern Square7,695
Copper Beech5,301
Marsh Lane3,486
Upper Fenwick Community Library3,917
Loans by branchLoans by branch
Loans by branch
branchloans
Northgate2,969
Riverside Commons2,695
Old Mill6,096
Harbour View Annex7,785
Elm Street3,499
Quarry Hill7,698
Saint Brigid Reading Rooms7,279
Westfield3,294
Lantern Square7,695
Copper Beech5,301
Marsh Lane3,486
Upper Fenwick Community Library3,917
mode="precision"
Loans by branchLoans by branch
Loans by branch
branchloans
Northgate2,969
Riverside Commons2,695
Old Mill6,096
Harbour View Annex7,785
Elm Street3,499
Quarry Hill7,698
Saint Brigid Reading Rooms7,279
Westfield3,294
Lantern Square7,695
Copper Beech5,301
Marsh Lane3,486
Upper Fenwick Community Library3,917
substrate="green"
Loans by branchLoans by branch
Loans by branch
branchloans
Northgate2,969
Riverside Commons2,695
Old Mill6,096
Harbour View Annex7,785
Elm Street3,499
Quarry Hill7,698
Saint Brigid Reading Rooms7,279
Westfield3,294
Lantern Square7,695
Copper Beech5,301
Marsh Lane3,486
Upper Fenwick Community Library3,917
ground="cyanotype"

Example

The chart above, in each framework. Pick a framework once and every example on the site follows it.

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

const data = [
  { branch: 'Northgate', loans: 2969 },
  { branch: 'Riverside Commons', loans: 2695 },
  { branch: 'Old Mill', loans: 6096 },
  { branch: 'Harbour View Annex', loans: 7785 },
  { branch: 'Elm Street', loans: 3499 },
  { branch: 'Quarry Hill', loans: 7698 },
  { branch: 'Saint Brigid Reading Rooms', loans: 7279 },
  { branch: 'Westfield', loans: 3294 },
  { branch: 'Lantern Square', loans: 7695 },
  { branch: 'Copper Beech', loans: 5301 },
  { branch: 'Marsh Lane', loans: 3486 },
  { branch: 'Upper Fenwick Community Library', loans: 3917 },
];

export default function App() {
  return (
    <div style={{ width: 480 }}>
      <LollipopChart
        data={data}
        xKey="branch"
        valueKey="loans"
        title="Loans by branch"
      />
    </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 { LollipopChart } from '@silverpoint/react/lollipop-chart';
Vueimport { SpLollipopChart } from '@silverpoint/vue/lollipop-chart';
Angularimport { SpLollipopChart } from '@silverpoint/angular/lollipop-chart'; // <sp-lollipop-chart>
Reflexfrom reflex_silverpoint_react import lollipop_chart

Props

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

React / AngularVueReflexTypeDescription
xKeyx-keyx_keyAccessor<string | number>—
valueKeyvalue-keyvalue_keyAccessor<number | null | undefined>—
orientationorientationorientationChartOrientation—
sortsortsort'none' | 'ascending' | 'descending'Order of the categories; none keeps the data order.

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 LollipopChart? Open an issue on GitHub — the form comes pre-filled with the chart and the version.