Loading...
The elementHighlightByColor interaction targets chart elements. When the mouse hovers over an element, it highlights all elements with the same color 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',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: { elementHighlightByColor: { link: true } },});chart.render();
There are two ways to configure the elementHighlightByColor interaction:
First, pass a boolean to set whether to enable the interaction.
({type: 'interval',interaction: { elementHighlightByColor: true }, // Use default configuration});
Second, pass configuration options to configure the interaction.
({type: 'line',interaction: {elementHighlightByColor: {background: true,},},});
Interaction can be configured at the Mark level:
({type: 'interval',interaction: { elementHighlightByColor: 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: { elementHighlightByColor: true },});
Element highlight interaction configuration has two parts:
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 |
| link | Whether to show connection lines | 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 |
| link | Whether to show connection lines | linkStyle | See linkStyle |
Element highlight background style, see example Custom Highlight
| Property | Description | Type | Default | Required |
|---|---|---|---|---|
| backgroundRadius | Background border radius | number | (datum, index, data) => number | 0 | |
| backgroundFill | Background fill color | string | (datum, index, data) => string | transparent | |
| backgroundFillOpacity | Background fill opacity | number | (datum, index, data) => number | - | |
| backgroundStroke | Background stroke | string | (datum, index, data) => string | - | |
| backgroundStrokeOpacity | Background stroke opacity | number | (datum, index, data) => number | - | |
| backgroundLineWidth | Background stroke width | number | (datum, index, data) => number | - | |
| backgroundLineDash | Background stroke dash configuration. First value is dash length, second is gap length. Setting lineDash to [0,0] means no stroke. | [number,number] | (datum, index, data) => [number , number] | - | |
| backgroundOpacity | Background overall opacity | number | (datum, index, data) => number | - | |
| backgroundShadowColor | Background shadow color | string | (datum, index, data) => string | - | |
| backgroundShadowBlur | Background shadow Gaussian blur coefficient | number | (datum, index, data) => number | - | |
| backgroundShadowOffsetX | Set horizontal distance of shadow from background | number | (datum, index, data) => number | - | |
| backgroundShadowOffsetY | Set vertical distance of shadow from background | number | (datum, index, data) => number | - | |
| backgroundCursor | Background mouse cursor style. Same as CSS cursor style. | string | (datum, index, data) => string | default |
({state: {active: {backgroundRadius: 50,backgroundFill: '#000',backgroundFillOpacity: 0.9,backgroundStroke: '#DAF5EC',backgroundStrokeOpacity: 0.9,backgroundLineWidth: 2,backgroundLineDash: [4, 8],backgroundOpacity: 1,backgroundShadowColor: '#d3d3d3',backgroundShadowBlur: 10,backgroundShadowOffsetX: 10,backgroundShadowOffsetY: 10,backgroundCursor: 'pointer',},},});
Connection style, see example Connection Line Highlight
| Property | Description | Type | Default | Required |
|---|---|---|---|---|
| linkRadius | Connection line border radius | number | (datum, index, data) => number | 0 | |
| linkFill | Connection line fill color | string | (datum, index, data) => string | transparent | |
| linkFillOpacity | Connection line fill opacity | number | (datum, index, data) => number | - | |
| linkStroke | Connection line stroke | string | (datum, index, data) => string | - | |
| linkStrokeOpacity | Connection line stroke opacity | number | (datum, index, data) => number | - | |
| linkLineWidth | Connection line stroke width | number | (datum, index, data) => number | - | |
| linkLineDash | Connection line stroke dash configuration. First value is dash length, second is gap length. Setting lineDash to [0,0] means no stroke. | [number,number] | (datum, index, data) => [number , number] | - | |
| linkOpacity | Connection line overall opacity | number | (datum, index, data) => number | - | |
| linkShadowColor | Connection line shadow color | string | (datum, index, data) => string | - | |
| linkShadowBlur | Connection line shadow Gaussian blur coefficient | number | (datum, index, data) => number | - | |
| linkShadowOffsetX | Set horizontal distance of shadow from connection line | number | (datum, index, data) => number | - | |
| linkShadowOffsetY | Set vertical distance of shadow from connection line | number | (datum, index, data) => number | - | |
| linkCursor | Connection line mouse cursor style. Same as CSS cursor style. | string | (datum, index, data) => string | default |
({state: {active: {linkRadius: 50,linkFill: '#000',linkFillOpacity: 0.9,linkStroke: '#DAF5EC',linkStrokeOpacity: 0.9,linkLineWidth: 2,linkLineDash: [4, 8],linkOpacity: 1,linkShadowColor: '#d3d3d3',linkShadowBlur: 10,linkShadowOffsetX: 10,linkShadowOffsetY: 10,linkCursor: 'pointer',},},});
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',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: { elementHighlightByColor: 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',linkRadius: 50,linkFill: 'green',linkFillOpacity: 0.9,linkStroke: '#DAF5EC',linkStrokeOpacity: 0.9,linkLineWidth: 2,linkOpacity: 1,linkCursor: 'pointer',},inactive: { opacity: 0.5 },},axis: { y: { labelFormatter: '~s' } },interaction: {elementHighlightByColor: { link: true, background: true },},});chart.render();
import { Chart } from '@antv/g2';const chart = new Chart({container: 'container',});chart.options({type: 'interval',height: 600,transform: [{ type: 'stackY' },{ type: 'sortX', by: 'y', reverse: true, slice: 5 },],coordinate: { transform: [{ type: 'transpose' }] },data: {type: 'fetch',value:'https://gw.alipayobjects.com/os/bmw-prod/f129b517-158d-41a9-83a3-3294d639b39e.csv',format: 'csv',},legend: false,encode: {x: 'state',y: 'population',color: 'age',},axis: {y: { labelFormatter: '~s' },},scale: {x: { paddingInner: 0.2 },},state: {active: {linkFill: (d) => (d.state === 'CA' ? 'red' : undefined),stroke: '#000',lineWidth: 1,linkFillOpacity: 0.5,},inactive: {opacity: 0.6,},},interaction: {elementHighlightByColor: {link: true,},},});chart.render();