sort

排序

排序配置, 统计类图表, 可根据指标或维度对类目轴或图例排序, 或自定义顺序

sortAXis

指标排序

1export const SortAxisByMeasure = memo(() => {
2  const vseed: VSeed = {
3    chartType: 'line',
4    dataset: [
5      { date: '2019', profit: 10, sales: 20, count: 15 },
6      { date: '2020', profit: 30, sales: 60, count: 33 },
7      { date: '2021', profit: 30, sales: 60, count: 22 },
8      { date: '2022', profit: 50, sales: 100, count: 14 },
9      { date: '2023', profit: 40, sales: 80, count: 30 },
10    ],
11    dimensions: [{ id: 'date', alias: '日期', location: 'dimension' }],
12    measures: [
13      { id: 'count', alias: '数量' },
14      {
15        id: 'group',
16        alias: '分组',
17        children: [
18          { id: 'sales', alias: '销售额' },
19          { id: 'profit', alias: '利润' },
20        ],
21      },
22    ],
23    sortAxis: {
24      order: 'desc',
25      orderBy: 'sales',
26    },
27  }
28  return <PivotChart vseed={vseed} />
29})

维度排序

1export const SortAxisByDimension = memo(() => {
2  const vseed: VSeed = {
3    chartType: 'line',
4    dataset: [
5      { date: '2019', profit: 10, sales: 20, count: 50 },
6      { date: '2020', profit: 30, sales: 60, count: 50 },
7      { date: '2021', profit: 30, sales: 60, count: 50 },
8      { date: '2022', profit: 50, sales: 100, count: 50 },
9      { date: '2023', profit: 40, sales: 80, count: 50 },
10    ],
11    dimensions: [{ id: 'date', alias: '日期', location: 'dimension' }],
12    measures: [
13      { id: 'profit', alias: '利润' },
14      { id: 'sales', alias: '销售额' },
15      { id: 'count', alias: '数量' },
16    ],
17    sortAxis: {
18      order: 'desc',
19      orderBy: 'date',
20    },
21  }
22  return <VChartRender vseed={vseed} />
23})

自定义排序

1export const SortAxisByCustom = memo(() => {
2  const vseed: VSeed = {
3    chartType: 'line',
4    dataset: [
5      { date: '2019', profit: 10, sales: 20, count: 50 },
6      { date: '2020', profit: 30, sales: 60, count: 50 },
7      { date: '2021', profit: 30, sales: 60, count: 50 },
8      { date: '2022', profit: 50, sales: 100, count: 50 },
9      { date: '2023', profit: 40, sales: 80, count: 50 },
10    ],
11    dimensions: [{ id: 'date', alias: '日期', location: 'dimension' }],
12    measures: [
13      { id: 'profit', alias: '利润' },
14      { id: 'sales', alias: '销售额' },
15      { id: 'count', alias: '数量' },
16    ],
17    sortAxis: {
18      customOrder: ['2022', '2023', '2021', '2020', '2019'],
19    },
20  }
21  return <VChartRender vseed={vseed} />
22})

sortLegend

图例自身排序

TIP

仅传入 order, 则按图例自身的字符顺序排序

1export const SortLegendBySelf = memo(() => {
2  const vseed: VSeed = {
3    chartType: 'column',
4    dataset: [
5      { date: '2019', profit: 10, sales: 20, count: 15 },
6      { date: '2020', profit: 30, sales: 60, count: 33 },
7      { date: '2021', profit: 30, sales: 60, count: 22 },
8      { date: '2022', profit: 50, sales: 100, count: 14 },
9      { date: '2023', profit: 40, sales: 80, count: 30 },
10    ],
11    dimensions: [{ id: 'date', alias: '日期', location: 'dimension' }],
12    measures: [
13      { id: 'count', alias: '数量' },
14      { id: 'sales', alias: '销售额' },
15      { id: 'profit', alias: '利润' },
16    ],
17    sortLegend: {
18      order: 'desc',
19    },
20  }
21  return <VChartRender vseed={vseed} />
22})

指标排序

1export const SortLegendByMeasure = memo(() => {
2  const vseed: VSeed = {
3    chartType: 'line',
4    dataset: [
5      { date: '2019', profit: 10, sales: 20, count: 15 },
6      { date: '2020', profit: 30, sales: 60, count: 33 },
7      { date: '2021', profit: 30, sales: 60, count: 22 },
8      { date: '2022', profit: 50, sales: 100, count: 14 },
9      { date: '2023', profit: 40, sales: 80, count: 30 },
10    ],
11    dimensions: [{ id: 'date', alias: '日期', location: 'dimension' }],
12    measures: [
13      { id: 'count', alias: '数量' },
14      {
15        id: 'group',
16        alias: '分组',
17        children: [
18          { id: 'sales', alias: '销售额' },
19          { id: 'profit', alias: '利润' },
20        ],
21      },
22    ],
23    sortLegend: {
24      order: 'desc',
25      orderBy: 'sales',
26    },
27  }
28  return <PivotChart vseed={vseed} />
29})

维度排序

1export const SortLegendByDimension = memo(() => {
2  const vseed: VSeed = {
3    chartType: 'line',
4    dataset: [
5      { date: '2019', profit: 10, sales: 20, count: 50 },
6      { date: '2020', profit: 30, sales: 60, count: 50 },
7      { date: '2021', profit: 30, sales: 60, count: 50 },
8      { date: '2022', profit: 50, sales: 100, count: 50 },
9      { date: '2023', profit: 40, sales: 80, count: 50 },
10    ],
11    dimensions: [{ id: 'date', alias: '日期', location: 'dimension' }],
12    measures: [
13      { id: 'profit', alias: '利润' },
14      { id: 'sales', alias: '销售额' },
15      { id: 'count', alias: '数量' },
16    ],
17    sortLegend: {
18      order: 'desc',
19      orderBy: 'date',
20    },
21  }
22  return <VChartRender vseed={vseed} />
23})

自定义排序(图例名称)

TIP

builder.getColorItems() 可获取到图例名称的数组

1export const SortLegendByCustom = memo(() => {
2  const vseed: VSeed = {
3    chartType: 'line',
4    dataset: [
5      { date: '2019', profit: 10, sales: 20, count: 50 },
6      { date: '2020', profit: 30, sales: 60, count: 50 },
7      { date: '2021', profit: 30, sales: 60, count: 50 },
8      { date: '2022', profit: 50, sales: 100, count: 50 },
9      { date: '2023', profit: 40, sales: 80, count: 50 },
10    ],
11    dimensions: [{ id: 'date', alias: '日期', location: 'dimension' }],
12    measures: [
13      { id: 'profit', alias: '利润' },
14      { id: 'sales', alias: '销售额' },
15      { id: 'count', alias: '数量' },
16    ],
17    sortLegend: {
18      customOrder: ['销售额', '数量', '利润'],
19    },
20  }
21  return <VChartRender vseed={vseed} />
22})

自定义排序(图例Id)

TIP

builder.getColorIdMap() 可获取到图例id和名称的映射关系

1export const SortLegendByCustomId = memo(() => {
2  const vseed: VSeed = {
3    chartType: 'columnParallel',
4    dataset: [
5      { date: '2019', profit: 10, sales: 20, count: 50 },
6      { date: '2020', profit: 30, sales: 60, count: 50 },
7      { date: '2021', profit: 30, sales: 60, count: 50 },
8      { date: '2022', profit: 50, sales: 100, count: 50 },
9      { date: '2023', profit: 40, sales: 80, count: 50 },
10    ],
11    dimensions: [{ id: 'date', alias: '日期', location: 'dimension' }],
12    measures: [
13      { id: 'profit', alias: '利润' },
14      { id: 'sales', alias: '销售额' },
15      { id: 'count', alias: '数量' },
16    ],
17    sortLegend: {
18      customOrder: ['数量-count', '销售额-sales', '利润-profit'],
19    },
20  }
21  return <VChartRender vseed={vseed} />
22})