Loading...
The elementHighlightByX interaction targets chart elements. When the mouse hovers over an element, it highlights all elements with the same x channel value as the hovered element.
Trigger: Mouse hover over element.
End: Mouse leaves element.
Affected states:
Hovered elements change to active state.
Other elements change to inactive state.
Built-in interaction states:
({// Active state elements have 1px black borderstate: { active: { lineWidth: '1', stroke: '#000' } },});

import { Chart } from '@antv/g2';const chart = new Chart({ container: 'container' });chart.options({type: 'interval',paddingLeft: 50,data: {type: 'fetch',value:'https://gw.alipayobjects.com/os/bmw-prod/f129b517-158d-41a9-83a3-3294d639b39e.csv',format: 'csv',},encode: { x: 'state', y: 'population', color: 'age' },transform: [{ type: 'sortX', by: 'y', reverse: true, slice: 6 },{ type: 'dodgeX' },],state: { active: { fill: 'red' }, inactive: { opacity: 0.5 } },axis: { y: { labelFormatter: '~s' } },interaction: { elementHighlightByX: true },});chart.render();
There are two ways to configure the elementHighlightByX interaction:
First, pass a boolean to set whether to enable the interaction.
({type: 'interval',interaction: { elementHighlightByX: true }, // Use default configuration});
Second, pass configuration options to configure the interaction.
({type: 'line',interaction: {elementHighlightByX: {background: true,},},});
Interaction can be configured at the Mark level:
({type: 'interval',interaction: { elementHighlightByX: true },});
It can also be configured at the View level. Interactions declared on the view will be passed to marks declared in children. If the mark has declared the corresponding interaction, they will be merged; otherwise, it won't be affected.
({type: 'view',interaction: { elementHighlightByX: true },});
Interaction configuration
| Property | Description | Type | Default |
|---|---|---|---|
| background | Whether to highlight background | boolean | false |
| region | Whether to trigger highlight when mouse moves to empty area of element (see below) | boolean | false |
Element highlight style configuration
| Property | Description | Type | Default |
|---|---|---|---|
| offset | Offset in the main direction | number | 0 |
| background | Whether to highlight background | backgroundStyle | See backgroundStyle |
The following events are supported:
element:highlight - Triggered when element is highlightedelement:unhighlight - Triggered when element highlight is removedchart.on('element:highlight', (e) => {console.log(e.data.data);console.log(e.data.group);console.log(e.nativeEvent);});chart.on('element:unhighlight', (e) => {console.log(e.nativeEvent);});
The following events are supported:
element:highlight - Highlight dataelement:unhighlight - Remove highlightchart.emit('element:highlight', {data: { data: { population: 5038433 } },});chart.emit('element:unhighlight', {});
import { Chart } from '@antv/g2';const chart = new Chart({container: 'container',});chart.options({type: 'interval',paddingLeft: 50,data: {type: 'fetch',value:'https://gw.alipayobjects.com/os/bmw-prod/f129b517-158d-41a9-83a3-3294d639b39e.csv',format: 'csv',},encode: { x: 'state', y: 'population', color: 'age' },transform: [{ type: 'sortX', by: 'y', reverse: true, slice: 6 },{ type: 'dodgeX' },],axis: { y: { labelFormatter: '~s' } },interaction: { elementHighlightByX: true },});chart.render();
import { Chart } from '@antv/g2';const chart = new Chart({container: 'container',});chart.options({type: 'interval',data: {type: 'fetch',value:'https://gw.alipayobjects.com/os/bmw-prod/f129b517-158d-41a9-83a3-3294d639b39e.csv',format: 'csv',},encode: { x: 'state', y: 'population', color: 'age' },transform: [{ type: 'stackY' },{ type: 'sortX', by: 'y', reverse: true, slice: 5 },],state: {active: { fill: 'red', linkFillOpacity: 0.5 },inactive: { opacity: 0.5 },},axis: { y: { labelFormatter: '~s' } },interaction: { elementHighlightByX: true },});chart.render();