Loading...
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:
Through legend filtering, users can dynamically control the data items displayed in the chart, enhancing data exploration and analysis capabilities.
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();
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},});
Legend filter interaction can be configured at the View level:
chart.interaction('legendFilter', true);
The current version of the LegendFilter plugin has no configurable parameters. When calling, only the type needs to be specified:
Property | Description | Type | Default | Required |
---|---|---|---|---|
type | Interaction type identifier | string | none | Yes |
The LegendFilter plugin internally automatically determines whether it's a categorical legend or continuous legend based on the legend type, and handles them differently:
The plugin automatically identifies this information through data and structure information injected into legend elements, without requiring manual specification by users.
For detailed documentation see Legend component
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');});
chart.emit('legend:filter', {data: { channel: 'color', values: ['Sports', 'Strategy'] },});chart.emit('legend:reset', {});
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();