Skip to main content

Drilldown Functionality

Drilldown allows users to click on data points to navigate to more detailed information, creating a hierarchical data exploration experience.

Overview

The drilldown module enables multi-level data visualization where clicking on a point reveals more detailed data about that category.

Setup

First, include the drilldown module:

Basic Drilldown

Simple Column Drilldown

From the official demo (samples/highcharts/demo/column-drilldown/demo.js:4-315):

Drilldown Configuration

Breadcrumbs help users navigate back through drilldown levels:

Active Data Label Styling

Customize how drillable points are styled:

Drill Up Button

Customize the button that appears to navigate back:

Advanced Drilldown Features

Multi-Level Drilldown

Create multiple levels of drilling:

Async Drilldown

Load drilldown data dynamically from an API (from ts/Extensions/Drilldown/Drilldown.ts:134-158):

Programmatic Drilldown

Trigger drilldown programmatically:
1

Point Drilldown

Drill down on a specific point:
2

Axis Drilldown

Drill down to a category on an axis:
3

Drill Up

Navigate back programmatically:

Drilldown Events

Handle drilldown interactions with events:

Drilldown with Different Chart Types

Pie Chart Drilldown

Map Drilldown

Styling Drilldown

Animation

Series-Specific Styling

Accessibility

Ensure drilldown is accessible:

Best Practices

Drilldown UX Tips
  • Always show breadcrumbs or a drill-up button
  • Provide visual feedback that points are clickable (cursor, hover states)
  • Use consistent chart types across drill levels when possible
  • Include instructions in subtitle or caption
  • Limit drill depth to 3-4 levels for usability
  • Pre-load common drilldown data to reduce latency
Common Pitfalls
  • Drilldown series IDs must match the drilldown property exactly
  • Async drilldown requires checking if (!e.seriesOptions)
  • Don’t forget to include the drilldown module
  • Memory usage can grow with many drill levels
  • Test on touch devices - ensure tap targets are large enough

Complete Example with All Features