facetRect
用 row、column 字段维值对空间和数据进行划分,在各个子空间可视化数据片段。
开始使用
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 中使用堆叠柱状图,并添加图例来区分不同的数据系列。
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();
更多的案例,可以查看图表示例页面。
选项
facetRect 的底层实现和 mark 一致,所以在配置上有很多是一样的。
| 属性 | 描述 | 类型 | 默认值 |
|---|---|---|---|
| data | 参考 data 相关介绍 | 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 相关介绍 | ||
| scale | 参考 scale 相关介绍 |
facetRect 对应的配置都可以使用 API 进行设置,例如:
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 是根据字段的个数来分面空间的。