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)

binX

Previous
bin
Next
diffY

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

binX is an important function for binning data in the X channel. It is primarily used to divide continuous data into discrete intervals or groups according to specified rules, making the data easier to analyze and suitable for specific visualization scenarios (such as heatmaps, bar charts, grid charts, etc.).

Similar to bin, binX is specifically used for data binning in the X-axis direction, while bin typically handles two-dimensional (X and Y) or single-dimensional data. binX can be applied independently, binning only the data in the X channel without needing to process data in other dimensions.

Use Cases

  • Divide continuous X channel data into multiple discrete intervals: Based on the data range, generate discrete intervals (such as [0-10), [10-20), etc.) by specifying binning rules.
  • Transform original data format: Through binning processing, generate new fields (such as specifying output field names) to represent the interval to which the data belongs.
  • Facilitate statistical data distribution: Binned data can be directly used for visualization processing (such as counting the frequency or values within each interval).
  • Process X channel data dimension independently: When the Y channel does not need binning, binX can bin only the X channel data, flexibly adjusting data processing logic.

To bin the Y channel, use binX + transpose coordinate system.

import { Chart } from '@antv/g2';
const chart = new Chart({
container: 'container',
});
chart.options({
type: 'rect',
autoFit: true,
data: {
type: 'fetch',
value: 'https://assets.antv.antgroup.com/g2/unemployment2.json',
},
encode: { x: 'rate' },
transform: [{ type: 'binX', y: 'count' }],
});
chart.render();

Configuration Options

PropertyDescriptionTypeDefault
thresholdsNumber of bins for x binningnumberd3.thresholdScott
[channel]Aggregation method for outputting data to mark channelchannel

thresholdsX

binX is a transformation operation specifically designed for binning (discretizing) continuous data in the X-axis direction. By configuring thresholdsX, you can explicitly specify the binning boundaries in the X-axis direction, enabling fine-grained control over the data.

import { Chart } from '@antv/g2';
const chart = new Chart({
container: 'container',
});
let thresholdsX;
chart.options({
type: 'rect', // Chart type is rectangle (histogram)
data: {
type: 'fetch',
value: 'https://assets.antv.antgroup.com/g2/movies.json',
},
encode: {
x: 'IMDB Rating', // X-axis encodes IMDB rating
y: 'Rotten Tomatoes Rating', // Y-axis encodes Rotten Tomatoes rating
},
transform: [
{
type: 'bin', // Data transformation type is binning
color: 'count', // Use color encoding to represent the number of data points in each bin
},
],
});
// Insert thresholdsX input box
const container = document.createElement('div');
const thresholdsX_Text = document.createElement('span');
thresholdsX_Text.textContent = 'thresholdsX: ';
const thresholdsX_Input = document.createElement('input');
thresholdsX_Input.setAttribute('type', 'number');
thresholdsX_Input.addEventListener('input', (e) => {
thresholdsX = e.target.value;
chart.options({
transform: [
{
type: 'bin',
color: 'count',
thresholdsX,
thresholdsY,
},
],
});
chart.render();
});
container.appendChild(thresholdsX_Text);
container.appendChild(thresholdsX_Input);
const node = chart.getContainer();
node.insertBefore(container, node.childNodes[0]);
chart.render();

channel

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

type Channel =
| '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}`;

Examples

Using bin + opacity to render color-categorized histogram

import { Chart } from '@antv/g2';
const chart = new Chart({
container: 'container',
});
chart.options({
type: 'rect',
autoFit: true,
data: {
type: 'fetch',
value: 'https://assets.antv.antgroup.com/g2/athletes.json',
},
encode: { x: 'weight', color: 'sex' },
transform: [
{ type: 'binX', y: 'count' },
{ type: 'stackY', orderBy: 'series' },
],
style: { inset: 0.5 },
});
chart.render();

Poisson Distribution

import { Chart } from '@antv/g2';
const random = d3Random.randomPoisson(Math.pow(10, 2.6));
const chart = new Chart({
container: 'container',
});
chart.options({
type: 'rect',
autoFit: true,
data: new Array(5000).fill(0).map(random),
encode: { x: (d) => d },
transform: [{ type: 'binX', y: 'count' }],
style: { stroke: 'white' },
tooltip: {
title: (d, i, data, column) => ({
value: `${column.x.value[i]} ~ ${column.x1.value[i]}`,
}),
},
});
chart.render();