logo

G2

  • Chart Gallery
  • Docs
  • Examples
  • Theme
  • Ecosystem
  • Productsantv logo arrow
  • 5.3.3
  • Get Started
  • Introduction
    • What is G2
    • Using in Frontend Frameworks
    • Experimental Spec API
  • Chart API
  • Core Concepts
    • Chart
      • Components of G2 Charts
      • How to Use Charts
    • Mark
      • Overview
      • area
      • box
      • boxplot
      • cell
      • chord
      • density
      • gauge
      • heatmap
      • image
      • interval
      • line
      • lineX
      • lineY
      • link
      • liquid
      • sunburst
      • point
      • polygon
      • range
      • rangeX
      • rangeY
      • rect
      • shape
      • text
      • vector
      • connector
      • wordCloud
    • View
    • Data
      • Overview
      • custom
      • ema
      • fetch
      • filter
      • fold
      • inline
      • join
      • kde
      • log
      • map
      • pick
      • rename
      • slice
      • sort
      • sortBy
    • Encode
    • Scale
      • Overview
      • band
      • linear
      • log
      • ordinal
      • point
      • quantile
      • quantize
      • sqrt
      • threshold
      • time
      • pow
    • Transform
      • Overview
      • bin
      • binX
      • diffY
      • dodgeX
      • flexX
      • group
      • groupColor
      • groupX
      • groupY
      • jitter
      • jitterX
      • jitterY
      • normalizeY
      • pack
      • sample
      • select
      • selectX
      • selectY
      • sortColor
      • sortX
      • sortY
      • stackEnter
      • stackY
      • symmetryY
    • Coordinate
      • Overview
      • fisheye
      • parallel
      • polar
      • theta
      • transpose
      • radial
      • cartesian3D
      • helix
    • Style
    • Animate
      • Overview
      • fadeIn
      • fadeOut
      • growInX
      • growInY
      • morphing
      • pathIn
      • scaleInX
      • scaleInY
      • scaleOutX
      • scaleOutY
      • waveIn
      • zoomIn
      • zoomOut
    • State
    • Interaction
      • Overview
      • brushAxisHighlight
      • brushHighlight
      • brushXHighlight
      • brushYHighlight
      • brushFilter
      • brushXFilter
      • brushYFilter
      • chartIndex
      • elementHighlight
      • elementHighlightByColor
      • elementHighlightByX
      • elementSelect
      • elementSelectByColor
      • elementSelectByX
      • legendFilter
      • legendHighlight
      • poptip
      • scrollbarFilter
      • sliderFilter
      • fisheye
    • Composition
      • Overview
      • facetCircle
      • facetRect
      • repeatMatrix
      • spaceFlex
      • spaceLayer
      • timingKeyframe
    • Theme
      • Overview
      • academy
      • classic
      • classicDark
    • Events
    • Color Mapping
  • Chart Component
    • Title
    • Axis
    • Legend
    • Scrollbar
    • Slider
    • Tooltip
    • Data Label
  • Extra Topics
    • Graph
      • forceGraph
      • pack
      • sankey
      • tree
      • treemap
    • Geo
      • geoPath
      • geoView
    • 3D
      • Draw 3D Chart
      • point3D
      • line3D
      • interval3D
      • surface3D
    • Plugin
      • renderer
      • rough
      • lottie
      • a11y
    • Package on demand
    • Set pattern
    • Server-Side Rendering (SSR)
    • Spec Function Expression Support (Available in 5.3.0)
  • Whats New
    • New Version Features
    • Migration from v4 to v5
  • Frequently Asked Questions (FAQ)

legendFilter

Previous
elementSelectByX
Next
legendHighlight

Resources

Ant Design
Galacea Effects
Umi-React Application Framework
Dumi-Component doc generator
ahooks-React Hooks Library

Community

Ant Financial Experience Tech
seeconfSEE Conf-Experience Tech Conference

Help

GitHub
StackOverflow

more productsMore Productions

Ant DesignAnt Design-Enterprise UI design language
yuqueYuque-Knowledge creation and Sharing tool
EggEgg-Enterprise-class Node development framework
kitchenKitchen-Sketch Tool set
GalaceanGalacean-互动图形解决方案
xtechLiven Experience technology
© Copyright 2025 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

Overview

legendFilter is an interaction feature that allows users to filter data displayed in the chart by clicking legend items. The filtering functionality supports two types of legends:

  • Categorical legend: for filtering discrete data
  • Continuous legend: for filtering continuous data

Through legend filtering, users can dynamically control the data items displayed in the chart, enhancing data exploration and analysis capabilities.

example
import { Chart } from '@antv/g2';
const chart = new Chart({
container: 'container',
});
chart
.data(temperatures)
.encode('x', 'month')
.encode('y', 'temperature')
.encode('color', 'city')
.call((chart) => chart.line())
.call((chart) => chart.point());
chart.interaction('legendFilter', true);
chart.render();

Usage

Legend filtering functionality is enabled by default when using legends.

({
type: 'interval',
legend: {
color: {},
size: {},
},
});

You can also manually set whether to enable it in interaction:

({
type: 'interval',
legend: {
color: {},
size: {},
},
interaction: {
legendFilter: true, // Enable legend filter interaction
},
});

Configuration Level

Legend filter interaction can be configured at the View level:

chart.interaction('legendFilter', true);

Configuration Options

The current version of the LegendFilter plugin has no configurable parameters. When calling, only the type needs to be specified:

PropertyDescriptionTypeDefaultRequired
typeInteraction type identifierstringnoneYes

Complex Type Description

The LegendFilter plugin internally automatically determines whether it's a categorical legend or continuous legend based on the legend type, and handles them differently:

  • Categorical legend (className = legend-category): Click behavior is bound to filtering, supporting multi-select, cancel, and reset.
  • Continuous legend (className = legend-continuous): Binds valuechange event to listen for slider changes.

The plugin automatically identifies this information through data and structure information injected into legend elements, without requiring manual specification by users.

legend Component Configuration

For detailed documentation see Legend component

Events

Getting Data

  • legend:filter - Triggered when user filters through legend
  • legend:reset - Triggered when all legend items are selected (reset state)
chart.on('legend:filter', (e) => {
const { nativeEvent, data } = e;
if (!nativeEvent) return;
console.log(data);
});
chart.on('legend:reset', (e) => {
const { nativeEvent } = e;
if (!nativeEvent) return;
console.log('end');
});

Triggering Interaction

  • legend:filter - Trigger legend filtering
  • legend:reset - Reset filter state
chart.emit('legend:filter', {
data: { channel: 'color', values: ['Sports', 'Strategy'] },
});
chart.emit('legend:reset', {});

Examples

Below shows a legendfilter interaction functionality for discrete data.

import { Chart } from '@antv/g2';
const chart = new Chart({
container: 'container',
});
chart.options({
type: 'line',
autoFit: true,
height: 300,
data: {
type: 'fetch',
value: 'https://assets.antv.antgroup.com/g2/temperatures1.json',
},
encode: {
x: (d) => new Date(d.date),
y: 'value',
color: 'condition',
},
});
chart.render();