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)

elementHighlightByColor

Previous
elementHighlight
Next
elementHighlightByX

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

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 border
state: { active: { lineWidth: '1', stroke: '#000' } },
});
example
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();

Usage

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,
},
},
});

Configuration Level

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 },
});

Configuration Options

Element highlight interaction configuration has two parts:

  1. Interaction configuration
  2. Element highlight style

Interaction configuration

PropertyDescriptionTypeDefault
backgroundWhether to highlight backgroundbooleanfalse
regionWhether to trigger highlight when mouse moves to empty area of element (see below)booleanfalse
linkWhether to show connection linesbooleanfalse
example

Element highlight style configuration

PropertyDescriptionTypeDefault
offsetOffset in the main directionnumber0
backgroundWhether to highlight backgroundbackgroundStyleSee backgroundstyle
linkWhether to show connection lineslinkStyleSee linkStyle

backgroundStyle

Element highlight background style, see example Custom Highlight

PropertyDescriptionTypeDefaultRequired
backgroundRadiusBackground border radiusnumber | (datum, index, data) => number0
backgroundFillBackground fill colorstring | (datum, index, data) => stringtransparent
backgroundFillOpacityBackground fill opacitynumber | (datum, index, data) => number-
backgroundStrokeBackground strokestring | (datum, index, data) => string-
backgroundStrokeOpacityBackground stroke opacitynumber | (datum, index, data) => number-
backgroundLineWidthBackground stroke widthnumber | (datum, index, data) => number-
backgroundLineDashBackground 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]-
backgroundOpacityBackground overall opacitynumber | (datum, index, data) => number-
backgroundShadowColorBackground shadow colorstring | (datum, index, data) => string-
backgroundShadowBlurBackground shadow Gaussian blur coefficientnumber | (datum, index, data) => number-
backgroundShadowOffsetXSet horizontal distance of shadow from backgroundnumber | (datum, index, data) => number-
backgroundShadowOffsetYSet vertical distance of shadow from backgroundnumber | (datum, index, data) => number-
backgroundCursorBackground mouse cursor style. Same as CSS cursor style.string | (datum, index, data) => stringdefault
({
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',
},
},
});

linkStyle

Connection style, see example Connection Line Highlight

PropertyDescriptionTypeDefaultRequired
linkRadiusConnection line border radiusnumber | (datum, index, data) => number0
linkFillConnection line fill colorstring | (datum, index, data) => stringtransparent
linkFillOpacityConnection line fill opacitynumber | (datum, index, data) => number-
linkStrokeConnection line strokestring | (datum, index, data) => string-
linkStrokeOpacityConnection line stroke opacitynumber | (datum, index, data) => number-
linkLineWidthConnection line stroke widthnumber | (datum, index, data) => number-
linkLineDashConnection 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]-
linkOpacityConnection line overall opacitynumber | (datum, index, data) => number-
linkShadowColorConnection line shadow colorstring | (datum, index, data) => string-
linkShadowBlurConnection line shadow Gaussian blur coefficientnumber | (datum, index, data) => number-
linkShadowOffsetXSet horizontal distance of shadow from connection linenumber | (datum, index, data) => number-
linkShadowOffsetYSet vertical distance of shadow from connection linenumber | (datum, index, data) => number-
linkCursorConnection line mouse cursor style. Same as CSS cursor style.string | (datum, index, data) => stringdefault
({
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',
},
},
});

Events

Listening to Events

The following events are supported:

  • element:highlight - Triggered when element is highlighted
  • element:unhighlight - Triggered when element highlight is removed
chart.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);
});

Triggering Interaction

The following events are supported:

  • element:highlight - Highlight data
  • element:unhighlight - Remove highlight
chart.emit('element:highlight', {
data: { data: { population: 5038433 } },
});
chart.emit('element:unhighlight', {});

Examples

Basic Highlight

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();

Connection Line Highlight

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();

Transpose

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();