Skip to main content

Overview

The Treemap class creates a treemap visualization where hierarchical data is displayed using nested rectangles. The size of each rectangle represents its value.
import * as am5hierarchy from "@amcharts/amcharts5/hierarchy";

const treemap = root.container.children.push(
  am5hierarchy.Treemap.new(root, {
    layoutAlgorithm: "squarify",
    nodePaddingInner: 2
  })
);

Class Hierarchy

  • Series
    • Hierarchy
      • Treemap

Settings

nodePaddingInner

nodePaddingInner
number
Gap between nodes in pixels.
treemap.set("nodePaddingInner", 2);

nodePaddingOuter

nodePaddingOuter
number
Gap between nodes and outer edge of the chart in pixels.When set, this overrides individual edge padding settings.

nodePaddingTop

nodePaddingTop
number
Gap between nodes and top edge in pixels.Will be ignored if nodePaddingOuter is set.

nodePaddingBottom

nodePaddingBottom
number
Gap between nodes and bottom edge in pixels.Will be ignored if nodePaddingOuter is set.

nodePaddingLeft

nodePaddingLeft
number
Gap between nodes and left edge in pixels.Will be ignored if nodePaddingOuter is set.

nodePaddingRight

nodePaddingRight
number
Gap between nodes and right edge in pixels.Will be ignored if nodePaddingOuter is set.

layoutAlgorithm

layoutAlgorithm
'binary' | 'squarify' | 'slice' | 'dice' | 'sliceDice'
default:"'squarify'"
Algorithm to use when laying out node rectangles.
  • "squarify" - Creates approximately square rectangles (default)
  • "binary" - Uses binary partitioning
  • "slice" - Divides horizontally
  • "dice" - Divides vertically
  • "sliceDice" - Alternates between slice and dice by depth
treemap.set("layoutAlgorithm", "binary");

Inherited Settings

Treemap inherits all settings from Hierarchy, including:
  • sort - How to sort nodes by value (“ascending” | “descending” | “none”)
  • valueField - Field in data holding numeric value
  • categoryField - Field in data holding category name
  • childDataField - Field in data holding array of children
  • downDepth - Number of child levels to show when drilling down
  • upDepth - Number of parent levels to show from selected node
  • initialDepth - Number of levels to show on first load
  • topDepth - Starting level to show (hides upper levels)
  • singleBranchOnly - Collapse other branches when one expands
  • animationDuration - Duration for drill animations in milliseconds
  • animationEasing - Easing function for animations
  • colors - ColorSet for auto-assigning node colors
  • patterns - PatternSet for auto-assigning node patterns

Data Item Properties

Each data item in a Treemap chart has the following properties:

children

children
Array<DataItem<ITreemapDataItem>>
An array of children data items.

parent

parent
DataItem<ITreemapDataItem>
Parent data item.

rectangle

rectangle
RoundedRectangle
The RoundedRectangle element representing this node.

value

value
number
Value of the node as set in data.

sum

sum
number
Sum of child values.

valuePercentTotal

valuePercentTotal
number
Percent value of the node, based on total sum of all nodes in upper level.

valuePercent

valuePercent
number
Percent value of the node, based on the value of its direct parent.Since: 5.2.21

category

category
string
Category name of the node.

depth

depth
number
Node’s depth within the hierarchy (0 for root).

node

node
HierarchyNode
Reference to the visual HierarchyNode element.

label

label
Label
Reference to node’s Label element.

fill

fill
Color
Node’s auto-assigned color.

fillPattern

fillPattern
Pattern
Node’s auto-assigned pattern.Since: 5.10.0

disabled

disabled
boolean
Indicates if node is currently disabled (collapsed).

Data Format

interface ITreemapDataObject {
  name?: string;
  value?: number;
  children?: ITreemapDataObject[];
}

Example Data

treemap.data.setAll([{
  name: "Root",
  children: [
    {
      name: "Category A",
      children: [
        { name: "Item A1", value: 100 },
        { name: "Item A2", value: 60 }
      ]
    },
    {
      name: "Category B",
      children: [
        { name: "Item B1", value: 135 },
        { name: "Item B2", value: 98 }
      ]
    }
  ]
}]);

List Templates

Treemap provides access to these list templates for customization:

nodes

nodes
ListTemplate<HierarchyNode>
List of all node container elements.
treemap.nodes.template.setAll({
  toggleKey: "disabled"
});

rectangles

rectangles
ListTemplate<RoundedRectangle>
List of node rectangle elements in the Treemap chart.
treemap.rectangles.template.setAll({
  strokeWidth: 2,
  stroke: am5.color(0xffffff),
  cornerRadiusTL: 4,
  cornerRadiusTR: 4,
  cornerRadiusBL: 4,
  cornerRadiusBR: 4
});

labels

labels
ListTemplate<Label>
List of label elements.
treemap.labels.template.setAll({
  text: "{category}\n{valuePercentTotal.formatNumber('0.0')}%",
  fontSize: 12,
  oversizedBehavior: "truncate",
  textAlign: "center"
});

Containers

nodesContainer

nodesContainer
Container
Container that holds all node elements.

Methods

selectDataItem()

selectDataItem(dataItem: DataItem<ITreemapDataItem>): void
Selects a specific data item, triggering drill-down animation.
dataItem
DataItem<ITreemapDataItem>
The data item to select.

getDataItemById()

getDataItemById(id: string): DataItem<ITreemapDataItem> | undefined
Looks up and returns a data item by its ID.
id
string
The ID to search for.
return
DataItem<ITreemapDataItem> | undefined
The found data item, or undefined if not found.

enableDataItem()

enableDataItem(
  dataItem: DataItem<ITreemapDataItem>,
  maxDepth?: number,
  depth?: number,
  duration?: number
): void
Enables a disabled (collapsed) data item.
dataItem
DataItem<ITreemapDataItem>
Target data item to enable.
maxDepth
number
Maximum depth to enable children to.
depth
number
Current depth (used internally for recursion).
duration
number
Animation duration in milliseconds.

disableDataItem()

disableDataItem(
  dataItem: DataItem<ITreemapDataItem>,
  duration?: number
): void
Disables (collapses) a data item.
dataItem
DataItem<ITreemapDataItem>
Target data item to disable.
duration
number
Animation duration in milliseconds.

addChildData()

addChildData(
  dataItem: DataItem<ITreemapDataItem>,
  data: Array<any>
): void
Adds children data to the target data item dynamically.
dataItem
DataItem<ITreemapDataItem>
Parent data item to add children to.
data
Array<any>
Array of child data objects.
Since: 5.4.5

hoverDataItem()

hoverDataItem(dataItem: DataItem<ITreemapDataItem>): void
Triggers hover state on a data item.
dataItem
DataItem<ITreemapDataItem>
Target data item.
Since: 5.0.7

unhoverDataItem()

unhoverDataItem(dataItem: DataItem<ITreemapDataItem>): void
Removes hover state from a data item.
dataItem
DataItem<ITreemapDataItem>
Target data item.
Since: 5.0.7

Events

dataitemselected

treemap.events.on("dataitemselected", (ev) => {
  console.log("Selected:", ev.dataItem);
});
Fired when a data item is selected.
dataItem
DataItem<ITreemapDataItem> | undefined
The selected data item.

Private Settings

These are read-only private settings managed internally:

scaleX

scaleX
number
Current horizontal scale.

scaleY

scaleY
number
Current vertical scale.

See Also

Build docs developers (and LLMs) love