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)

stackEnter

Previous
sortY
Next
stackY

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

stackEnter is an animation effect for stacked graphic elements, primarily used for entrance animations in stacked charts. Its core functionality is to present the layered and cumulative relationships of data in a more intuitive and visually appealing way through dynamic transitions.

Through stackEnter, AntV makes the initial rendering of stacked charts more expressive, enhancing the clarity of data presentation and user experience.

Use Cases

Stack Animation

  • stackEnter renders each data layer sequentially in stacking order (from bottom to top), creating a progressive layering animation effect.
  • For example: In a stacked bar chart, each category's bar starts from the baseline, first drawing the bottom data layer, then progressively stacking other layers upward until forming a complete stacked bar.

Visual Guidance

  • Highlights the "accumulation process" of stacking through animation, helping users understand each layer's contribution to the total.
  • Suitable for showing the relationship between parts and the whole (such as the proportion of different categories across various dimensions).

Smooth Transition

  • Animation is usually accompanied by easing effects, making transitions more natural and avoiding abrupt data changes.

Specific Examples

  • Stacked bar/column charts: Each bar grows upward in segments.
  • Stacked area charts: Area regions expand layer by layer from the baseline.
  • Other stacked charts: Such as stacked forms in rose charts and radar charts.

Configuration Options

PropertyDescriptionTypeDefault Value
groupBySelect a grouping channelstring | string[]x
reducerGrouping value method(I: number[], V: any[]) => any(I, V) => V[I[0]]
orderBySorting channelstringnull
reverseWhether to reverse orderbooleantrue
durationAnimation duration (in milliseconds)number3000

groupBy

When stackEnter executes, data needs to be grouped, and stackEnter calculation logic is performed within each group. For example, for area charts, y data under the same x value needs to be grouped, then min-max processing logic is applied within the group, so stackEnter is set to the x channel.

Theoretically, stackEnter can be set to all channel values. For details, refer to the encode documentation. All enumerated values are as follows:

export type ChannelTypes =
| 'x'
| 'y'
| 'z'
| 'x1'
| 'y1'
| 'series'
| 'color'
| 'opacity'
| 'shape'
| 'size'
| 'key'
| 'groupKey'
| 'position'
| 'series'
| 'enterType'
| 'enterEasing'
| 'enterDuration'
| 'enterDelay'
| 'updateType'
| 'updateEasing'
| 'updateDuration'
| 'updateDelay'
| 'exitType'
| 'exitEasing'
| 'exitDuration'
| 'exitDelay'
| `position${number}`;

reducer

The reducer is a function used to process data after grouping. It receives two parameters:

  • I: Array of data indices, representing the index positions of each group's data in the original dataset
  • V: Array of original data values, containing all data items

By default, the reducer returns the first element value of each group: (I, V) => V[I[0]], but you can customize this function to implement specific data processing logic, such as summing or averaging, to give charts a clearer organization. Here are simple examples for reference:

// Use custom reducer to calculate the sum of each group's data
chart.options({
// ...
transform: [
{
type: 'stackEnter',
groupBy: 'x',
reducer: (indices, values) => {
// Calculate the sum of all values in the current group
return indices.reduce((sum, index) => sum + values[index].value, 0);
},
},
],
});
// Use custom reducer to calculate the average of each group's data
chart.options({
// ...
transform: [
{
type: 'stackEnter',
groupBy: 'x',
reducer: (indices, values) => {
const sum = indices.reduce(
(acc, index) => acc + values[index].value,
0,
);
return sum / indices.length; // Return average value
},
},
],
});

Example

The following is a simple example code demonstrating how to use stackEnter and its visual effects.

import { Chart } from '@antv/g2';
const chart = new Chart({ container: 'container' });
chart.options({
type: 'interval',
data: [
{ type: 'Apple', year: '2001', value: 260 },
{ type: 'Orange', year: '2001', value: 100 },
{ type: 'Banana', year: '2001', value: 90 },
{ type: 'Apple', year: '2002', value: 210 },
{ type: 'Orange', year: '2002', value: 150 },
{ type: 'Banana', year: '2002', value: 30 },
],
encode: {
x: 'year',
y: 'value',
color: 'type',
series: 'type',
enterDuration: 1000,
},
transform: [{ type: 'stackEnter', groupBy: 'x' }],
});
chart.render();

Finally, the following effect is presented (dynamic effect):

stackEnter