logo

S2

  • 使用文档
  • API 文档
  • 图表示例
  • 在线体验
  • 更新日志
  • 所有产品antv logo arrow
  • 2.x
  • 简介
  • 快速上手
  • 基础教程
    • 基本概念
      Updated
    • 表形态
      • 透视表
        Updated
      • 明细表
        Updated
    • 字段标记
      Updated
    • 小计总计
    • 排序
      • 基础排序
        Updated
      • 组内排序
        Updated
    • 主题配置
      Updated
    • Tooltip
      Updated
    • 数据格式化
      New
    • 多行文本
      New
    • 国际化
    • 分页
      New
  • 进阶教程
    • 单元格渲染类型
      • 链接
      • 图片
        New
      • 视频
        New
      • 迷你图表
      • 结合@antv/g2
      • 自定义渲染
    • 自定义
      • 自定义 Hook
        Updated
      • 自定义行列头分组
        New
      • 自定义 Icon
        Updated
      • 自定义单元格对齐方式
        Updated
      • 自定义单元格宽高
        Updated
      • 自定义排序操作
        Updated
      • 自定义折叠/展开节点
        New
    • 交互
      • 基础交互
        Updated
      • 自定义交互
      • 隐藏列头
        Updated
      • 行列宽高调整
        Updated
      • 合并单元格
      • 滚动
        Updated
      • 复制与导出
        New
      • 高亮/选中单元格
        New
    • 分析组件
      • 简介
        New
      • 高级排序
        Updated
      • 维度切换
        Updated
      • 导出
        Updated
      • 分页
        Updated
      • 维度下钻
        Updated
    • 表格组件
      • 编辑表
      • 趋势分析表
        Updated
    • 高清适配
      Updated
    • 获取表格实例
    • 表格自适应
    • 获取单元格数据
      Updated
    • 注册 AntV/G 插件
      New
    • 透视组合图
      Experimental
    • Vue 3.0 组件 (停止维护)
  • 扩展阅读
    • 数据流处理
      • 透视表
      • 明细表
    • 布局流程
      • 透视表
      • 明细表
    • 性能介绍
      Updated
  • 贡献指南
  • 常见问题
  • S2 2.0 升级指南

透视组合图

上一篇
注册 AntV/G 插件
下一篇
Vue 3.0 组件 (停止维护)

Resources

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

社区

体验科技专栏
seeconfSEE Conf-蚂蚁体验科技大会

帮助

GitHub
StackOverflow

more products更多产品

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

Loading...

提示

阅读本章前,请确保已经对 S2 足够了解,并且熟悉 AntV/G 渲染引擎,AntV/G2的相关内容。

透视组合图是一种数据可视化技术,它可以使用透视表结构进一步可视化的展示数据信息。

为什么需要透视组合图?

透视表的数据分析能力无疑是强大的,以 @antv/s2 为例,结合字段标记的能力,还可以完成兼具一定程度可视化效果的透视表展示:
preview
但单纯从数据的可视化能力来说,和常规的图形还有差距,透视组合表可以说是既要又要的产物,基于透视表的笛卡尔结构,即拥有强大的维度拆分能力,又在具体的细分维度中具有图表的可视化表达能力,形如:
preview

与透视表的形态差异

透视表的数值区域会从单一的数据维度变成坐标轴;另一侧维度拆分只会到倒数第二层级,最后的维度区域同样会以坐标轴的形式展示,且列头的坐标轴始终在底部,符合常用图形的坐标轴使用情况。


preview

相比普通交叉表,透视组合图除了有行列角头之外,还需要配置坐标轴,分别是:

  1. 竖轴(axisRowHeader):用于绘制竖向坐标轴
  2. 横轴(axisColumnHeader):用于绘制横向坐标轴
  3. 交叉(axisCornerHeader):类似角头,用于绘制竖轴,横轴交叉区域

快速上手

安装 G2

该功能依赖 G2 的 `5.x` 版本,请确保使用了正确的版本

pnpm add @antv/g2

使用 PivotChartSheet

透视组合图是@antv/s2等拓展功能,所有模块均从 @antv/s2/extends 中导入:

import { PivotChartSheet } from '@antv/s2/extends';
async function bootstrap() {
const container = document.getElementById('container');
// 常规的透视表数据即可:https://gw.alipayobjects.com/os/bmw-prod/cd9814d0-6dfa-42a6-8455-5a6bd0ff93ca.json
const s2=new PivotChartSheet(container,dataCfg,s2Options);
await s2.render(); // 返回 Promise
}
bootstrap();

切换坐标系

数据可视化中,最常用的坐标系有两种:笛卡尔坐标系和极坐标系,均为二维坐标系:

  1. 笛卡尔坐标系即直角坐标系,是由相互垂直的两条轴线构成
  2. 极坐标系由极点、极轴组成,坐标系内任何一个点都可以用极径和夹角(逆时针)表示

在透视组合图中,可以在 s2Options 中进行切换:

const s2Options={
chart: {
// 切换为极坐标
coordinate: 'polar',
// 使用 扇形图 g2 spec
dataCellSpec: {
type: 'interval',
transform: [{ type: 'stackY' }],
coordinate: { type: 'theta', outerRadius: 0.8 },
},
},
}

在笛卡尔坐标系布局中,行列头会增加特殊的 axisRowHeader,axisColumnHeader用于绘制坐标系,而在极坐标系布局中,只存在一个坐标轴,行列头根据数据是否置于列头只会存在axisRowHeader或者axisColumnHeader之一,且展示简单维度信息(文字),和普通行列头别无二致,不会显示坐标系标尺。

查看 api 文档。

自定义

透视组合图只提供了外层的透视框架,具体绘制什么 G2 图形交由用户自己决定(默认绘制柱状图)。

自定义 spec

透视组合图透出 dataCellSpec,axisRowCellSpec, axisColCellSpec用于自定义各个区域的 g2 spec 配置:

const s2Options = {
chart: {
dataCellSpec: {},
axisRowCellSpec: {},
axisColCellSpec: {},
},
};

自定义 cell

如果希望不仅仅是更改 spec, 透视组合图还透出 AxisRowCell,AxisColCell, AxisCornerCell,PivotChartDataCell 用于完全自定义各个区域的单元格:

import type { S2Options } from '@antv/s2';
import { AxisColCell, AxisRowCell, PivotChartDataCell } from '@antv/s2/extends';
class CustomDataCell extends PivotChartDataCell {}
class CustomRowCell extends AxisRowCell {}
class CustomColCell extends AxisColCell {}
const s2Options: S2Options = {
dataCell: (viewMeta, spreadsheet) =>
new CustomDataCell(viewMeta, spreadsheet),
axisRowCell: (node, s2, headConfig) => {
return new CustomRowCell(node, s2, headConfig);
},
axisColCell: (node, s2, headConfig) => {
return new CustomColCell(node, s2, headConfig);
},
};

限制

透视组合图作为一种特殊的表格形态,目前无法兼容普通透视表的所有展示形态,有以下限制:

  1. 只能使用平铺模式,不支持树状模式
  2. 不支持自定义行列头
  3. 不支持自定义指标维度层级顺序