Skip to content
silverpoint
Documentation menu

Charts · Hierarchies & dimensions

SquarifiedTreemap

Nested rectangles, area by value, drillable through `rootId` and `onRootChange`. Family: Hierarchies & dimensions · chart 50 of 60.
City budgetCity budget
City budget
nodeamount
City budget69,364
City budget › Public works19,197, 27.7% of City budget
City budget › Public works › Street lighting8,015, 41.8% of Public works
City budget › Public works › Bridges6,154, 32.1% of Public works
City budget › Public works › Water mains2,878, 15% of Public works
City budget › Public works › Water mains › Water mains: staff2,069, 71.9% of Water mains
City budget › Public works › Water mains › Water mains: materials809, 28.1% of Water mains
City budget › Public works › Roads2,150, 11.2% of Public works
City budget › Public works › Roads › Roads: staff1,760, 81.9% of Roads
City budget › Public works › Roads › Roads: materials390, 18.1% of Roads
City budget › Administration18,611, 26.8% of City budget
City budget › Administration › IT services8,252, 44.3% of Administration
City budget › Administration › Payroll6,768, 36.4% of Administration
City budget › Administration › Records3,591, 19.3% of Administration
City budget › Administration › Records › Records: staff3,281, 91.4% of Records
City budget › Administration › Records › Records: materials310, 8.6% of Records
City budget › Safety13,294, 19.2% of City budget
City budget › Safety › Emergency planning6,265, 47.1% of Safety
City budget › Safety › Lifeguards5,224, 39.3% of Safety
City budget › Safety › Lifeguards › Lifeguards: materials2,953, 56.5% of Lifeguards
City budget › Safety › Lifeguards › Lifeguards: staff2,271, 43.5% of Lifeguards
City budget › Safety › Fire service1,805, 13.6% of Safety
City budget › Parks10,626, 15.3% of City budget
City budget › Parks › Playgrounds5,030, 47.3% of Parks
City budget › Parks › Playgrounds › Playgrounds: materials2,865, 57% of Playgrounds
City budget › Parks › Playgrounds › Playgrounds: staff2,165, 43% of Playgrounds
City budget › Parks › Tree care2,835, 26.7% of Parks
City budget › Parks › Sports fields2,761, 26% of Parks
City budget › Parks › Sports fields › Sports fields: staff2,455, 88.9% of Sports fields
City budget › Parks › Sports fields › Sports fields: materials306, 11.1% of Sports fields
City budget › Culture7,636, 11% of City budget
City budget › Culture › Libraries3,177, 41.6% of Culture
City budget › Culture › Libraries › Libraries: materials2,265, 71.3% of Libraries
City budget › Culture › Libraries › Libraries: staff912, 28.7% of Libraries
City budget › Culture › Museum2,999, 39.3% of Culture
City budget › Culture › Festivals1,460, 19.1% of Culture
City budget › Culture › Festivals › Festivals: staff1,275, 87.3% of Festivals
City budget › Culture › Festivals › Festivals: materials185, 12.7% of Festivals
City budgetCity budget
City budget
nodeamount
City budget69,364
City budget › Public works19,197, 27.7% of City budget
City budget › Public works › Street lighting8,015, 41.8% of Public works
City budget › Public works › Bridges6,154, 32.1% of Public works
City budget › Public works › Water mains2,878, 15% of Public works
City budget › Public works › Water mains › Water mains: staff2,069, 71.9% of Water mains
City budget › Public works › Water mains › Water mains: materials809, 28.1% of Water mains
City budget › Public works › Roads2,150, 11.2% of Public works
City budget › Public works › Roads › Roads: staff1,760, 81.9% of Roads
City budget › Public works › Roads › Roads: materials390, 18.1% of Roads
City budget › Administration18,611, 26.8% of City budget
City budget › Administration › IT services8,252, 44.3% of Administration
City budget › Administration › Payroll6,768, 36.4% of Administration
City budget › Administration › Records3,591, 19.3% of Administration
City budget › Administration › Records › Records: staff3,281, 91.4% of Records
City budget › Administration › Records › Records: materials310, 8.6% of Records
City budget › Safety13,294, 19.2% of City budget
City budget › Safety › Emergency planning6,265, 47.1% of Safety
City budget › Safety › Lifeguards5,224, 39.3% of Safety
City budget › Safety › Lifeguards › Lifeguards: materials2,953, 56.5% of Lifeguards
City budget › Safety › Lifeguards › Lifeguards: staff2,271, 43.5% of Lifeguards
City budget › Safety › Fire service1,805, 13.6% of Safety
City budget › Parks10,626, 15.3% of City budget
City budget › Parks › Playgrounds5,030, 47.3% of Parks
City budget › Parks › Playgrounds › Playgrounds: materials2,865, 57% of Playgrounds
City budget › Parks › Playgrounds › Playgrounds: staff2,165, 43% of Playgrounds
City budget › Parks › Tree care2,835, 26.7% of Parks
City budget › Parks › Sports fields2,761, 26% of Parks
City budget › Parks › Sports fields › Sports fields: staff2,455, 88.9% of Sports fields
City budget › Parks › Sports fields › Sports fields: materials306, 11.1% of Sports fields
City budget › Culture7,636, 11% of City budget
City budget › Culture › Libraries3,177, 41.6% of Culture
City budget › Culture › Libraries › Libraries: materials2,265, 71.3% of Libraries
City budget › Culture › Libraries › Libraries: staff912, 28.7% of Libraries
City budget › Culture › Museum2,999, 39.3% of Culture
City budget › Culture › Festivals1,460, 19.1% of Culture
City budget › Culture › Festivals › Festivals: staff1,275, 87.3% of Festivals
City budget › Culture › Festivals › Festivals: materials185, 12.7% of Festivals
mode="precision"
City budgetCity budget
City budget
nodeamount
City budget69,364
City budget › Public works19,197, 27.7% of City budget
City budget › Public works › Street lighting8,015, 41.8% of Public works
City budget › Public works › Bridges6,154, 32.1% of Public works
City budget › Public works › Water mains2,878, 15% of Public works
City budget › Public works › Water mains › Water mains: staff2,069, 71.9% of Water mains
City budget › Public works › Water mains › Water mains: materials809, 28.1% of Water mains
City budget › Public works › Roads2,150, 11.2% of Public works
City budget › Public works › Roads › Roads: staff1,760, 81.9% of Roads
City budget › Public works › Roads › Roads: materials390, 18.1% of Roads
City budget › Administration18,611, 26.8% of City budget
City budget › Administration › IT services8,252, 44.3% of Administration
City budget › Administration › Payroll6,768, 36.4% of Administration
City budget › Administration › Records3,591, 19.3% of Administration
City budget › Administration › Records › Records: staff3,281, 91.4% of Records
City budget › Administration › Records › Records: materials310, 8.6% of Records
City budget › Safety13,294, 19.2% of City budget
City budget › Safety › Emergency planning6,265, 47.1% of Safety
City budget › Safety › Lifeguards5,224, 39.3% of Safety
City budget › Safety › Lifeguards › Lifeguards: materials2,953, 56.5% of Lifeguards
City budget › Safety › Lifeguards › Lifeguards: staff2,271, 43.5% of Lifeguards
City budget › Safety › Fire service1,805, 13.6% of Safety
City budget › Parks10,626, 15.3% of City budget
City budget › Parks › Playgrounds5,030, 47.3% of Parks
City budget › Parks › Playgrounds › Playgrounds: materials2,865, 57% of Playgrounds
City budget › Parks › Playgrounds › Playgrounds: staff2,165, 43% of Playgrounds
City budget › Parks › Tree care2,835, 26.7% of Parks
City budget › Parks › Sports fields2,761, 26% of Parks
City budget › Parks › Sports fields › Sports fields: staff2,455, 88.9% of Sports fields
City budget › Parks › Sports fields › Sports fields: materials306, 11.1% of Sports fields
City budget › Culture7,636, 11% of City budget
City budget › Culture › Libraries3,177, 41.6% of Culture
City budget › Culture › Libraries › Libraries: materials2,265, 71.3% of Libraries
City budget › Culture › Libraries › Libraries: staff912, 28.7% of Libraries
City budget › Culture › Museum2,999, 39.3% of Culture
City budget › Culture › Festivals1,460, 19.1% of Culture
City budget › Culture › Festivals › Festivals: staff1,275, 87.3% of Festivals
City budget › Culture › Festivals › Festivals: materials185, 12.7% of Festivals
substrate="green"
City budgetCity budget
City budget
nodeamount
City budget69,364
City budget › Public works19,197, 27.7% of City budget
City budget › Public works › Street lighting8,015, 41.8% of Public works
City budget › Public works › Bridges6,154, 32.1% of Public works
City budget › Public works › Water mains2,878, 15% of Public works
City budget › Public works › Water mains › Water mains: staff2,069, 71.9% of Water mains
City budget › Public works › Water mains › Water mains: materials809, 28.1% of Water mains
City budget › Public works › Roads2,150, 11.2% of Public works
City budget › Public works › Roads › Roads: staff1,760, 81.9% of Roads
City budget › Public works › Roads › Roads: materials390, 18.1% of Roads
City budget › Administration18,611, 26.8% of City budget
City budget › Administration › IT services8,252, 44.3% of Administration
City budget › Administration › Payroll6,768, 36.4% of Administration
City budget › Administration › Records3,591, 19.3% of Administration
City budget › Administration › Records › Records: staff3,281, 91.4% of Records
City budget › Administration › Records › Records: materials310, 8.6% of Records
City budget › Safety13,294, 19.2% of City budget
City budget › Safety › Emergency planning6,265, 47.1% of Safety
City budget › Safety › Lifeguards5,224, 39.3% of Safety
City budget › Safety › Lifeguards › Lifeguards: materials2,953, 56.5% of Lifeguards
City budget › Safety › Lifeguards › Lifeguards: staff2,271, 43.5% of Lifeguards
City budget › Safety › Fire service1,805, 13.6% of Safety
City budget › Parks10,626, 15.3% of City budget
City budget › Parks › Playgrounds5,030, 47.3% of Parks
City budget › Parks › Playgrounds › Playgrounds: materials2,865, 57% of Playgrounds
City budget › Parks › Playgrounds › Playgrounds: staff2,165, 43% of Playgrounds
City budget › Parks › Tree care2,835, 26.7% of Parks
City budget › Parks › Sports fields2,761, 26% of Parks
City budget › Parks › Sports fields › Sports fields: staff2,455, 88.9% of Sports fields
City budget › Parks › Sports fields › Sports fields: materials306, 11.1% of Sports fields
City budget › Culture7,636, 11% of City budget
City budget › Culture › Libraries3,177, 41.6% of Culture
City budget › Culture › Libraries › Libraries: materials2,265, 71.3% of Libraries
City budget › Culture › Libraries › Libraries: staff912, 28.7% of Libraries
City budget › Culture › Museum2,999, 39.3% of Culture
City budget › Culture › Festivals1,460, 19.1% of Culture
City budget › Culture › Festivals › Festivals: staff1,275, 87.3% of Festivals
City budget › Culture › Festivals › Festivals: materials185, 12.7% of Festivals
ground="cyanotype"

Example

The chart above, in each framework. Pick a framework once and every example on the site follows it. One row per node, linked to its parent. Click a node to drill down.

shell
npm install @silverpoint/react @silverpoint/grounds @silverpoint/fonts
tsx
import '@silverpoint/fonts/fonts.css';
import '@silverpoint/grounds/styles.css';
import { SquarifiedTreemap } from '@silverpoint/react/squarified-treemap';

const data = [
  { id: 'budget', parent: null, name: 'City budget' },
  { id: 'works', parent: 'budget', name: 'Public works' },
  { id: 'works-01', parent: 'works', name: 'Roads' },
  { id: 'works-01-a', parent: 'works-01', name: 'Roads: staff', amount: 1760 },
  { id: 'works-01-b', parent: 'works-01', name: 'Roads: materials', amount: 390 },
  { id: 'works-02', parent: 'works', name: 'Bridges', amount: 6154 },
  { id: 'works-03', parent: 'works', name: 'Water mains' },
  { id: 'works-03-a', parent: 'works-03', name: 'Water mains: staff', amount: 2069 },
  { id: 'works-03-b', parent: 'works-03', name: 'Water mains: materials', amount: 809 },
  { id: 'works-04', parent: 'works', name: 'Street lighting', amount: 8015 },
  { id: 'parks', parent: 'budget', name: 'Parks' },
  { id: 'parks-05', parent: 'parks', name: 'Playgrounds' },
  // … 26 more rows of the same shape
];

export default function App() {
  return (
    <div style={{ width: 480 }}>
      <SquarifiedTreemap
        data={data}
        idKey="id"
        parentKey="parent"
        labelKey="name"
        valueKey="amount"
        title="City budget"
      />
    </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 { SquarifiedTreemap } from '@silverpoint/react/squarified-treemap';
Vueimport { SpSquarifiedTreemap } from '@silverpoint/vue/squarified-treemap';
Angularimport { SpSquarifiedTreemap } from '@silverpoint/angular/squarified-treemap'; // <sp-squarified-treemap>
Reflexfrom reflex_silverpoint_react import squarified_treemap

Props

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

React / AngularVueReflexTypeDescription
idKeyid-keyid_keyAccessor<string>—
parentKeyparent-keyparent_keyAccessor<string | null | undefined>null for the root.
labelKeylabel-keylabel_keyAccessor<string | null | undefined>—
valueKeyvalue-keyvalue_keyAccessor<number | null | undefined>Read on leaves; an internal node is the sum of its children.
depthdepthdepthnumberLevels drawn below the root; all by default.
rootIdroot-idroot_idstring | nullThe node drawn as root, controlled; the data root by default.
onRootChangeon-root-changeon_root_change(id: string | null) => voidA node asked to be drawn as root (None: back to the top); pass it back as root_id.

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 →

SquarifiedTreemap also drills down under your control: a click, Enter or Space on a node emits its id (its parent's from the drawn root, null at the top), and you pass it back as the root. The chart above does exactly that.

FrameworkRoot inRoot asked for
ReactrootIdonRootChange
Vue:root-id@root-change
Angular[rootId](rootChange)
Reflexroot_idon_root_change
Drill-down & hierarchies →
Report it
Found something wrong with SquarifiedTreemap? Open an issue on GitHub — the form comes pre-filled with the chart and the version.