---
title: "facetRect"
description: "按行列字段划分矩形分面，在网格中比较不同数据子集。"
language: "zh"
canonical: "https://g2.antv.antgroup.com/zh/manual/core/composition/facet-rect/"
version: "5.4.8"
---

[资料索引](/llms.txt)

用 row、column 字段维值对空间和数据进行划分，在各个子空间可视化数据片段。

## 开始使用

<img alt="facetRect" src="https://mdn.alipayobjects.com/mdn/huamei_qa8qxu/afts/img/A*duq8TrR0LxcAAAAAAAAAAAAADmJ7AQ" width="600" />

```ts
import { Chart } from '@antv/g2';

const chart = new Chart({
  container: 'container',
  width: 928,
  height: 270,
  paddingBottom: 50,
});

chart.options({
  type: 'facetRect',
  paddingBottom: 50,
  data: {
    type: 'fetch',
    value: 'https://assets.antv.antgroup.com/g2/anscombe.json',
  },
  encode: { x: 'series' },
  children: [
    {
      type: 'point',
      encode: { x: 'x', y: 'y' },
      style: { stroke: '#000' },
      inset: 10,
    },
  ],
});

chart.render();
```

## 堆叠柱状图分面图

下面的示例展示了如何在 facetRect 中使用堆叠柱状图，并添加图例来区分不同的数据系列。



```ts
import { Chart } from '@antv/g2';

const chart = new Chart({ container: 'container' });

chart.options({
  type: 'facetRect',
  margin: 60,
  data: [
    { region: '华东', quarter: 'Q1', category: '家具', sales: 120 },
    { region: '华东', quarter: 'Q1', category: '办公用品', sales: 80 },
    { region: '华东', quarter: 'Q1', category: '技术', sales: 150 },
    { region: '华东', quarter: 'Q2', category: '家具', sales: 150 },
    { region: '华东', quarter: 'Q2', category: '办公用品', sales: 90 },
    { region: '华东', quarter: 'Q2', category: '技术', sales: 180 },
    { region: '华南', quarter: 'Q1', category: '家具', sales: 100 },
    { region: '华南', quarter: 'Q1', category: '办公用品', sales: 70 },
    { region: '华南', quarter: 'Q1', category: '技术', sales: 130 },
    { region: '华南', quarter: 'Q2', category: '家具', sales: 130 },
    { region: '华南', quarter: 'Q2', category: '办公用品', sales: 85 },
    { region: '华南', quarter: 'Q2', category: '技术', sales: 160 },
    { region: '华北', quarter: 'Q1', category: '家具', sales: 110 },
    { region: '华北', quarter: 'Q1', category: '办公用品', sales: 75 },
    { region: '华北', quarter: 'Q1', category: '技术', sales: 140 },
    { region: '华北', quarter: 'Q2', category: '家具', sales: 140 },
    { region: '华北', quarter: 'Q2', category: '办公用品', sales: 95 },
    { region: '华北', quarter: 'Q2', category: '技术', sales: 170 },
  ],
  encode: { x: 'region' },
  children: [
    {
      type: 'interval',
      encode: { x: 'quarter', y: 'sales', color: 'category' },
      transform: [{ type: 'stackY' }],
      legend: {
        color: { position: 'top', layout: { justifyContent: 'center' } },
      },
    },
  ],
});

chart.render();
```



更多的案例，可以查看[图表示例](/zh/examples/)页面。

## 选项

facetRect 的底层实现和 mark 一致，所以在配置上有很多是一样的。

| 属性          | 描述                                               | 类型     | 默认值 |
| ------------- | -------------------------------------------------- | -------- | ------ |
| data          | 参考 [data](/zh/manual/core/data/overview/) 相关介绍   | `Data`   |        |
| encode        | 通道设置，见下表                                   |          |        |
| padding       | padding 大小                                       | `number` | 0      |
| paddingLeft   |                                                    | `number` | 0      |
| paddingRight  |                                                    | `number` | 0      |
| paddingTop    |                                                    | `number` | 0      |
| paddingBottom |                                                    | `number` | 0      |
| margin        | margin                                             | `number` | 0      |
| marginLeft    |                                                    | `number` | 0      |
| marginRight   |                                                    | `number` | 0      |
| marginTop     |                                                    | `number` | 0      |
| marginBottom  |                                                    | `number` | 0      |
| title         | 参考 [title](/zh/manual/component/title/) 相关介绍     |          |        |
| scale         | 参考 [scale](/zh/manual/core/scale/overview/) 相关介绍 |          |        |

`facetRect` 对应的配置都可以使用 API 进行设置，例如：

```ts
chart.options({ type: 'facetRect', data: [1, 2, 3], encode: { x: 'type' } });
```

### encode

对于 facetRect 有自己独特的 encode 通道。

| 通道 | 描述                                                  | 类型                               | 默认值 |
| ---- | ----------------------------------------------------- | ---------------------------------- | ------ |
| x    | 指定 x 方向上分面的字段，可以是常年、字段名、回调函数 | `string` \| `(d, idx, arr) => any` |        |
| y    | 指定 x 方向上分面的字段，可以是常年、字段名、回调函数 | `string` \| `(d, idx, arr) => any` |        |

## FAQ

- facetRect 是不是和 repeatMatrix 功能上重复？

facetRect 是通过 x, y encode 字段去划分空间，比如指定 `encode('x', 'sex')`，那么就会根据性别的枚举值，在 x 方向均分为 2 个分面。而 repeatMatrix 是根据字段的个数来分面空间的。
