logo

G2

  • 图表介绍
  • 文档
  • 图表示例
  • 主题
  • 周边生态
  • 所有产品antv logo arrow
  • 5.4.1
  • 快速上手
  • 简介
    • 什么是 G2
    • 在前端框架中使用
    • Spec 和 API
  • 图表 API
  • 核心概念
    • G2 配置项总览
    • 图表组成和使用(Chart)
      • G2 图表组成
      • 图表生命周期
    • 图形标记(Mark)
      • 概览
      • 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
      • beeswarm
    • 视图(View)
    • 数据配置和数据转换(Data)
      • 概览
      • custom
      • ema
      • fetch
      • filter
      • fold
      • inline
      • join
      • kde
      • log
      • map
      • pick
      • rename
      • slice
      • sort
      • sortBy
    • 编码映射(Encode)
    • 比例尺(Scale)
      • 概览
      • band
      • linear
      • log
      • ordinal
      • point
      • quantile
      • quantize
      • sqrt
      • threshold
      • time
      • pow
    • 标记转换(Transform)
      • 概览
      • 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)
      • 概览
      • fisheye
      • parallel
      • polar
      • theta
      • transpose
      • radial
      • cartesian3D
      • helix
    • 样式(Style)
    • 动画(Animate)
      • 概览
      • fadeIn
      • fadeOut
      • growInX
      • growInY
      • morphing
      • pathIn
      • scaleInX
      • scaleInY
      • scaleOutX
      • scaleOutY
      • waveIn
      • zoomIn
      • zoomOut
    • 状态管理(State)
    • 交互(Interaction)
      • 概览
      • brushAxisHighlight
      • brushHighlight
      • brushXHighlight
      • brushYHighlight
      • brushFilter
      • brushXFilter
      • brushYFilter
      • chartIndex
      • elementHighlight
      • elementHighlightByColor
      • elementHighlightByX
      • elementSelect
      • elementSelectByColor
      • elementSelectByX
      • fisheye
      • legendFilter
      • legendHighlight
      • poptip
      • scrollbarFilter
      • sliderFilter
    • 复合视图(Composition)
      • 概览
      • facetCircle
      • facetRect
      • repeatMatrix
      • spaceFlex
      • spaceLayer
      • timingKeyframe
    • 主题(Theme)
      • 概览
      • academy
      • classic
      • classicDark
    • 事件处理(Event)
    • 颜色映射(Color)
  • 图表组件
    • 标题(Title)
    • 坐标轴(Axis)
    • 图例(Legend)
    • 滚动条(Scrollbar)
    • 缩略轴(Slider)
    • 提示信息(Tooltip)
    • 数据标签(Label)
  • 进阶主题
    • 关系图(Graph)
      • forceGraph
      • pack
      • sankey
      • tree
      • treemap
    • 地图(Geo)
      • geoPath
      • geoView
    • 3D 图表(3D Chart)
      • 绘制 3D 图表
      • point3D
      • line3D
      • interval3D
      • surface3D
    • 插件扩展(Plugin)
      • renderer
      • rough
      • lottie
      • a11y
    • 按需打包
    • 设置纹理
    • 服务端渲染(SSR)
    • Spec 函数表达式支持 (5.3.0 支持)
  • 版本特性
    • 新版本特性
    • v4 升级 v5 指南
  • 常见问题 FAQ

beeswarm

上一篇
wordCloud
下一篇
视图(View)

资源

Ant Design
Galacea Effects
Umi-React 应用开发框架
Dumi-组件/文档研发工具
ahooks-React Hooks 库
WeaveFox-前端智能研发

社区

体验科技专栏
seeconfSEE Conf-蚂蚁体验科技大会
weavefoxWeaveFox-智能研发技术社区

帮助

GitHub
StackOverflow

more products更多产品

Ant DesignAnt Design-企业级 UI 设计语言
yuque语雀-知识创作与分享工具
EggEgg-企业级 Node 开发框架
kitchenKitchen-Sketch 工具集
GalaceanGalacean-互动图形解决方案
weavefoxWeaveFox-前端智能研发
© Copyright 2025 Ant Group Co., Ltd..备案号:京ICP备15032932号-38

Loading...

beeswarm 图形标记主要用于绘制 蜂窝图,又名点群图、蜂群散点图(Swarm Plot),是一种基于平面直角坐标系的统计可视化图表。它核心是将离散数据点以类似 “蜂群聚集” 的有序形态分布在坐标轴上,既保留了单个数据点的原始信息,又通过避免点与点的重叠,清晰呈现数据的局部密度、离散程度及分布细节,尤其适用于小到中等规模数据集的单变量或双变量分布分析。

开始使用

import { Chart } from '@antv/g2';
const chart = new Chart({
container: 'container',
});
const data = Array.from({ length: 200 }, (_, i) => {
return {
x: `G${(i % 6) + 1}`,
y: 40 + Math.random() * 220,
};
});
chart.options({
type: 'beeswarm',
data,
encode: {
x: 'x',
y: 'y',
size: 4,
},
scale: {
y: {
nice: true,
domainMin: 0,
},
},
legend: {
size: false,
},
axis: {
x: { title: false },
y: { title: false },
},
});
chart.render();

更多的案例,可以查看图表示例 - 蜂窝图页面。

配置项

属性描述类型默认值必选
encode配置 beeswarm 标记的视觉通道,包括x、y、color、shape、size 等,用于指定视觉元素属性和数据之间的关系encode-✓
style配置 beeswarm 标记的图形样式style-

encode

配置 beeswarm 标记的视觉通道。

属性描述类型默认值必选
x绑定 beeswarm 标记的 x 属性通道,可以是 data 中的数值字段、有序名词和无序名词encode-✓
y绑定 beeswarm 标记的 y 属性通道,一般是 data 中的数值字段,为空的时候用来绘制一维散点图encode-
color绑定 beeswarm 标记的 color 属性通道,一般用于区分不同的数据类型,映射到分类字段encode-
shape绑定 beeswarm 标记的 shape 属性通道,改变图形标记的绘制形状hollow | hollowDiamond | hollowHexagon | hollowSquare | hollowTriangleDown | hollowTriangle | hollowBowtie | point | plus | diamond | square | triangle | triangleDown | hexagon | cross | bowtie | hyphen | line | tick | circlehollow
size绑定 beeswarm 标记的 size 属性通道,数据字段的大小映射到图形的半径(如果是正方形则是 1/2 边长)encode-

x & y

beeswarm 标记的位置视觉通道需要 x, y 两个字段的值,配置如下:

{
type: "beeswarm",
data: [{ month: '一月', temperature: 8 },{ month: '一月', temperature: 18 }],
encode: { x: "month", y: "temperature" },
}

color

color 视觉通道影响 beeswarm 图形标记的 填充颜色(在应用某些空心形状的时候,例如 hollow ,则会改变图形的 描边颜色)。在点图上应用时一般映射分类字段,对数据进行分组。

import { Chart } from '@antv/g2';
const chart = new Chart({
container: 'container',
});
const data = Array.from({ length: 300 }, (_, i) => {
return {
x: `G${(i % 6) + 1}`,
y: 40 + Math.random() * 220,
};
});
chart.options({
type: 'beeswarm',
data,
encode: {
x: 'x',
y: 'y',
size: 4,
color: 'x',
},
scale: {
y: {
nice: true,
domainMin: 0,
},
},
legend: {
size: false,
},
axis: {
x: { title: false },
y: { title: false },
},
});
chart.render();

shape

beeswarm 标记内置的 shape 图形如下,默认为 hollow。

图形描述
hollow空心圆
hollowDiamond空心菱形
hollowHexagon空心六边形
hollowSquare空心方块
hollowTriangleDown空心倒三角形
hollowTriangle空心三角形
hollowBowtie空心蝴蝶结
point实心圆
plus加号符号
diamond实心菱形
square实心方块
triangle实心三角形
triangleDown实心倒三角形
hexagon实心六边形
cross十字交叉符号
bowtie实心蝴蝶结
hyphen连字符(短横线)
line竖线符号
tick短竖线(tick 符号)
circle圆形符号

尝试一下:

const { Chart } = G2;
const chart = new Chart({
container: 'container',
});
const container = chart.getContainer();
// 可选的itemMarker形状
const shapeList = [
'hollow',
'hollowDiamond',
'hollowHexagon',
'hollowSquare',
'hollowTriangleDown',
'hollowTriangle',
'hollowBowtie',
'point',
'plus',
'diamond',
'square',
'triangle',
'triangleDown',
'hexagon',
'cross',
'bowtie',
'hyphen',
'line',
'tick',
'circle',
];
const shapeMap = shapeList.map((p) => {
return {
label: p,
value: p,
};
});
const data = Array.from({ length: 300 }, (_, i) => {
return {
x: `G${(i % 6) + 1}`,
y: 40 + Math.random() * 220,
radius: Math.random(),
};
});
chart.options({
type: 'beeswarm',
data,
encode: {
x: 'x',
y: 'y',
color: 'x',
shape: 'hollow'
},
scale: {
y: {
nice: true,
domainMin: 0,
},
size: { range: [3, 6] },
},
legend: {
size: false,
},
axis: {
x: { title: false },
y: { title: false },
},
});
const handleSetShape = (shape) => {
chart.options({
encode: {
x: 'x',
y: 'y',
size: 10,
shape,
},
});
chart.render(); // 重新渲染图表
};
const selectorContainer = document.createElement('div');
selectorContainer.textContent = '选择beeswarm标记的形状 ';
const selector = document.createElement('select');
selector.innerHTML = shapeMap.map(
(shape, index) =>
`<option value="${shape.value}" ${index === 0 ? 'selected' : ''}>${
shape.label
}</option>`,
);
selector.onchange = (e) => {
handleSetShape(e.target.value);
};
selectorContainer.appendChild(selector);
container.insertBefore(selectorContainer, container.childNodes[0]);
chart.render();

size

绑定 beeswarm 标记的 size 属性通道,就能绘制出 气泡图,此时数据字段的大小映射到图形的半径(如果是正方形则是 1/2 边长)。

import { Chart } from '@antv/g2';
const chart = new Chart({
container: 'container',
});
const data = Array.from({ length: 300 }, (_, i) => {
return {
x: `G${(i % 6) + 1}`,
y: 40 + Math.random() * 220,
radius: Math.random(),
};
});
chart.options({
type: 'beeswarm',
data,
encode: {
x: 'x',
y: 'y',
size: 'radius',
color: 'x',
shape: 'hyphen'
},
scale: {
y: {
nice: true,
domainMin: 0,
},
size: { range: [3, 6] },
},
legend: {
size: false,
},
axis: {
x: { title: false },
y: { title: false },
},
});
chart.render();

style

属性描述类型默认值必选
fillbeeswarm 标记填充颜色string | (datum, index, data) => string-
fillOpacitybeeswarm 标记填充透明度number | (datum, index, data) => numberbeeswarm: 0.95
strokebeeswarm 标记描边颜色string | (datum, index, data) => string-
strokeOpacitybeeswarm 标记描边透明度number | (datum, index, data) => numberhollow, plus, diamond : 0.95
lineWidthbeeswarm 标记描边宽度number | (datum, index, data) => numberhollow, diamond: 1
beeswarm: 0
plus: 3
lineDashbeeswarm 标记描边虚线配置[number,number] | (datum, index, data) => [number , number]-
opacitybeeswarm 标记整体透明度number | (datum, index, data) => number-
shadowColorbeeswarm 标记阴影颜色string | (datum, index, data) => string-
shadowBlurbeeswarm 标记阴影模糊系数number | (datum, index, data) => number-
shadowOffsetXbeeswarm 标记阴影水平偏移number | (datum, index, data) => number-
shadowOffsetYbeeswarm 标记阴影垂直偏移number | (datum, index, data) => number-
cursorbeeswarm 标记鼠标样式string | (datum, index, data) => stringdefault

尝试一下:

import { Chart } from '@antv/g2';
const chart = new Chart({ container: 'container' });
const data = Array.from({ length: 300 }, (_, i) => {
return {
x: `G${(i % 6) + 1}`,
y: 40 + Math.random() * 220,
radius: Math.random(),
};
});
chart.options({
type: 'beeswarm',
style: {
fill: 'skyblue', // 图形填充颜色,支持颜色字符串,优先级高于color通道
fillOpacity: 0.9, // 填充颜色透明度,范围 0-1
stroke: '#FADC7C', // 图形描边颜色
lineWidth: 3, // 描边宽度(像素)
lineDash: [1, 2], // 虚线配置[实线长度, 间隔长度],[0,0]表示无描边
strokeOpacity: 0.95, // 描边透明度,范围 0-1
opacity: 0.9, // 整体透明度,影响填充和描边
shadowColor: 'black', // 阴影颜色
shadowBlur: 10, // 阴影模糊程度(像素)
shadowOffsetX: 5, // 阴影水平偏移量(像素)
shadowOffsetY: 5, // 阴影垂直偏移量(像素)
cursor: 'pointer', // 鼠标悬停样式(同CSS cursor属性)
},
data,
encode: {
x: 'x',
y: 'y',
size: 'radius',
color: 'x',
shape: 'point'
},
scale: {
y: {
nice: true,
domainMin: 0,
},
size: { range: [3, 6] },
},
legend: {
size: false,
},
axis: {
x: { title: false },
y: { title: false },
},
});
chart.render();