配置双轴图指标
若measures有1
层, 第一个指标应用于主轴, 第二个指标及其之后的指标, 一起应用于次轴. 绘制一个普通双轴图.
若measures有2
层, 第一组指标应用于主轴, 第二组指标用于次轴, 第三组及其之后的指标组会被忽略. 绘制一个普通双轴图.
若measures有3
层, 每一组指标用于绘制一个双轴图, 自上而下, 纵向排列. 绘制一个组合双轴图.
1export const DualAxisChart = memo(() => {
2 const vseed: VSeed = {
3 chartType: 'dualAxis',
4 measures: [
5 { id: 'sales', alias: '销售额' },
6 { id: 'profit', alias: '利润' },
7 ],
8 dataset: [
9 { date: '2019', profit: 10, sales: 200 },
10 { date: '2020', profit: 30, sales: 600 },
11 { date: '2021', profit: 30, sales: 600 },
12 { date: '2022', profit: 50, sales: 1000 },
13 { date: '2023', profit: 40, sales: 800 },
14 ],
15 }
16 return <VChartRender vseed={vseed} />
17})
1export const DualAxisChart = memo(() => {
2 const vseed: VSeed = {
3 chartType: 'dualAxis',
4 measures: [
5 {
6 id: 'primary',
7 children: [{ id: 'sales', alias: '销售额' }],
8 },
9 {
10 id: 'secondary',
11 children: [{ id: 'profit', alias: '利润' }],
12 },
13 ],
14 dataset: [
15 { date: '2019', profit: 10, sales: 200 },
16 { date: '2020', profit: 30, sales: 600 },
17 { date: '2021', profit: 30, sales: 600 },
18 { date: '2022', profit: 50, sales: 1000 },
19 { date: '2023', profit: 40, sales: 800 },
20 ],
21 }
22 return <VChartRender vseed={vseed} />
23})
1export const CombinationDualAxisChart = memo(() => {
2 const vseed: VSeed = {
3 chartType: 'dualAxis',
4 measures: [
5 {
6 id: 'first',
7 alias: '第一个双轴图',
8 children: [
9 {
10 id: 'secondary-profit',
11 children: [{ id: 'profit', alias: '利润' }],
12 },
13 {
14 id: 'primary-sales',
15 children: [{ id: 'sales', alias: '销售额' }],
16 },
17 ],
18 },
19 {
20 id: 'second',
21 alias: '第一个双轴图',
22 children: [
23 {
24 id: 'primary-ratio',
25 children: [{ id: 'ratio', alias: '比率' }],
26 },
27 {
28 id: 'returnRatio',
29 children: [{ id: 'returnRatio', alias: '回报率' }],
30 },
31 ],
32 },
33 ],
34 dataset: [
35 { date: '2019', profit: 10, sales: 100, ratio: 301, returnRatio: 301 },
36 { date: '2020', profit: 30, sales: 3200, ratio: 32, returnRatio: 30 },
37 { date: '2021', profit: 30, sales: 300, ratio: 103, returnRatio: 503 },
38 { date: '2022', profit: 50, sales: 2400, ratio: 30, returnRatio: 24 },
39 { date: '2023', profit: 40, sales: 500, ratio: 305, returnRatio: 305 },
40 ],
41 dimensions: [
42 {
43 id: 'date',
44 alias: '日期',
45 },
46 ],
47 }
48 return <PivotChart vseed={vseed} />
49})
dualMeasures 是 measures 的一个便捷扩展, 用于配置双轴图的指标.
若dualMeasures仅有1
项, 则绘制一个普通双轴图.
若dualMeasures至少有2
项, 则绘制一个组合双轴图.
1export const DualAxisChart = memo(() => {
2 const vseed: VSeed = {
3 chartType: 'dualAxis',
4 dualMeasures: [
5 {
6 primaryMeasures: [{ id: 'profit' }],
7 secondaryMeasures: [{ id: 'sales' }],
8 },
9 ],
10 dataset: [
11 { date: '2019', profit: 10, sales: 200 },
12 { date: '2020', profit: 30, sales: 600 },
13 { date: '2021', profit: 30, sales: 600 },
14 { date: '2022', profit: 50, sales: 1000 },
15 { date: '2023', profit: 40, sales: 800 },
16 ],
17 }
18 return <VChartRender vseed={vseed} />
19})
1export const CombinationDualAxisChart = memo(() => {
2 const vseed: VSeed = {
3 chartType: 'dualAxis',
4 dualMeasures: [
5 {
6 primaryMeasures: [{ id: 'profit' }],
7 secondaryMeasures: [{ id: 'sales' }],
8 },
9 {
10 primaryMeasures: [{ id: 'ratio' }],
11 secondaryMeasures: [{ id: 'returnRatio' }],
12 },
13 ],
14 dataset: [
15 { date: '2019', profit: 10, sales: 100, ratio: 301, returnRatio: 301 },
16 { date: '2020', profit: 30, sales: 3200, ratio: 32, returnRatio: 30 },
17 { date: '2021', profit: 30, sales: 300, ratio: 103, returnRatio: 503 },
18 { date: '2022', profit: 50, sales: 2400, ratio: 30, returnRatio: 24 },
19 { date: '2023', profit: 40, sales: 500, ratio: 305, returnRatio: 305 },
20 ],
21 dimensions: [
22 {
23 id: 'date',
24 alias: '日期',
25 },
26 ],
27 }
28 return <PivotChart vseed={vseed} />
29})
1export const PivotDualAxisChart = memo(() => {
2 const vseed: VSeed = {
3 chartType: 'dualAxis',
4 dimensions: [
5 {
6 id: 'date',
7 alias: '日期',
8 },
9 {
10 id: 'type',
11 alias: '类型',
12 encoding: 'row',
13 },
14 {
15 id: 'test',
16 alias: '测试',
17 encoding: 'column',
18 },
19 ],
20 dataset: [
21 { date: '2019', type: 'A', test: 'TEST-A', profit: 10, sales: 100, ratio: 1, returnRatio: 301 },
22 { date: '2020', type: 'A', test: 'TEST-A', profit: 30, sales: 3200, ratio: 2, returnRatio: 30 },
23 { date: '2021', type: 'A', test: 'TEST-A', profit: 30, sales: 300, ratio: 3, returnRatio: 303 },
24 { date: '2022', type: 'A', test: 'TEST-A', profit: 50, sales: 2400, ratio: 4, returnRatio: 34 },
25 { date: '2023', type: 'A', test: 'TEST-A', profit: 40, sales: 500, ratio: 5, returnRatio: 305 },
26 { date: '2019', type: 'A', test: 'TEST-D', profit: 10, sales: 100, ratio: 5, returnRatio: 30 },
27 { date: '2020', type: 'A', test: 'TEST-D', profit: 30, sales: 3200, ratio: 4, returnRatio: 302 },
28 { date: '2021', type: 'A', test: 'TEST-D', profit: 30, sales: 300, ratio: 3, returnRatio: 30 },
29 { date: '2022', type: 'A', test: 'TEST-D', profit: 50, sales: 2400, ratio: 2, returnRatio: 304 },
30 { date: '2023', type: 'A', test: 'TEST-D', profit: 40, sales: 500, ratio: 1, returnRatio: 35 },
31
32 { date: '2019', type: 'B', test: 'TEST-A', profit: 10, sales: 100, ratio: 11, returnRatio: 301 },
33 { date: '2020', type: 'B', test: 'TEST-A', profit: 30, sales: 3200, ratio: 12, returnRatio: 30 },
34 { date: '2021', type: 'B', test: 'TEST-A', profit: 30, sales: 300, ratio: 13, returnRatio: 303 },
35 { date: '2022', type: 'B', test: 'TEST-A', profit: 50, sales: 2400, ratio: 14, returnRatio: 34 },
36 { date: '2023', type: 'B', test: 'TEST-A', profit: 40, sales: 500, ratio: 15, returnRatio: 305 },
37 { date: '2019', type: 'B', test: 'TEST-D', profit: 10, sales: 100, ratio: 51, returnRatio: 30 },
38 { date: '2020', type: 'B', test: 'TEST-D', profit: 30, sales: 3200, ratio: 51, returnRatio: 32 },
39 { date: '2021', type: 'B', test: 'TEST-D', profit: 30, sales: 300, ratio: 52, returnRatio: 303 },
40 { date: '2022', type: 'B', test: 'TEST-D', profit: 50, sales: 2400, ratio: 5, returnRatio: 34 },
41 { date: '2023', type: 'B', test: 'TEST-D', profit: 40, sales: 500, ratio: 1, returnRatio: 35 },
42 ],
43 dualMeasures: [
44 {
45 primaryMeasures: [{ id: 'profit' }],
46 secondaryMeasures: [{ id: 'sales' }],
47 },
48 {
49 primaryMeasures: [{ id: 'ratio' }],
50 secondaryMeasures: [{ id: 'returnRatio' }],
51 },
52 ],
53 }
54 return <PivotChart vseed={vseed} />
55})
1export const DualChartType = memo(() => {
2 const vseed: VSeed = {
3 chartType: 'dualAxis',
4 dualChartType: {
5 primary: 'area',
6 secondary: 'scatter',
7 },
8 dataset: [
9 { date: '2019', profit: 20, sales: 100 },
10 { date: '2020', profit: 30, sales: 600 },
11 { date: '2021', profit: 30, sales: 600 },
12 { date: '2022', profit: 50, sales: 500 },
13 { date: '2023', profit: 10, sales: 800 },
14 ],
15 measures: [
16 {
17 id: 'primary',
18 children: [{ id: 'sales', alias: '销售额' }],
19 },
20 {
21 id: 'secondary',
22 children: [{ id: 'profit', alias: '利润' }],
23 },
24 ],
25 }
26 return <VChartRender vseed={vseed} />
27})
1export const DualChartTypeArray = memo(() => {
2 const vseed: VSeed = {
3 chartType: 'dualAxis',
4 dualChartType: [
5 {
6 primary: 'area',
7 secondary: 'scatter',
8 },
9 {
10 primary: 'column',
11 secondary: 'line',
12 },
13 ],
14 measures: [
15 {
16 id: 'first',
17 alias: '第一个双轴图',
18 children: [
19 {
20 id: 'secondary-profit',
21 children: [{ id: 'profit', alias: '利润' }],
22 },
23 {
24 id: 'primary-sales',
25 children: [{ id: 'sales', alias: '销售额' }],
26 },
27 ],
28 },
29 {
30 id: 'second',
31 alias: '第一个双轴图',
32 children: [
33 {
34 id: 'primary-ratio',
35 children: [{ id: 'ratio', alias: '比率' }],
36 },
37 {
38 id: 'returnRatio',
39 children: [{ id: 'returnRatio', alias: '回报率' }],
40 },
41 ],
42 },
43 ],
44 dataset: [
45 { date: '2019', profit: 10, sales: 100, ratio: 301, returnRatio: 301 },
46 { date: '2020', profit: 30, sales: 3200, ratio: 32, returnRatio: 30 },
47 { date: '2021', profit: 30, sales: 300, ratio: 103, returnRatio: 503 },
48 { date: '2022', profit: 50, sales: 2400, ratio: 30, returnRatio: 24 },
49 { date: '2023', profit: 40, sales: 500, ratio: 305, returnRatio: 305 },
50 ],
51 dimensions: [
52 {
53 id: 'date',
54 alias: '日期',
55 },
56 ],
57 }
58 return <PivotChart vseed={vseed} />
59})
1export const DualYAxisArray = memo(() => {
2 const vseed: VSeed = {
3 chartType: 'dualAxis',
4 primaryYAxis: [
5 {
6 title: {
7 visible: true,
8 titleText: '利润',
9 },
10 },
11 {
12 title: {
13 visible: true,
14 titleText: '比率',
15 },
16 },
17 ],
18 secondaryYAxis: [
19 {
20 title: {
21 visible: true,
22 titleText: '销售额',
23 },
24 },
25 {
26 title: {
27 visible: true,
28 titleText: '回报率',
29 },
30 },
31 ],
32 measures: [
33 {
34 id: 'first',
35 alias: '第一个双轴图',
36 children: [
37 {
38 id: 'secondary-profit',
39 children: [{ id: 'profit', alias: '利润' }],
40 },
41 {
42 id: 'primary-sales',
43 children: [{ id: 'sales', alias: '销售额' }],
44 },
45 ],
46 },
47 {
48 id: 'second',
49 alias: '第一个双轴图',
50 children: [
51 {
52 id: 'primary-ratio',
53 children: [{ id: 'ratio', alias: '比率' }],
54 },
55 {
56 id: 'returnRatio',
57 children: [{ id: 'returnRatio', alias: '回报率' }],
58 },
59 ],
60 },
61 ],
62 dataset: [
63 { date: '2019', profit: 10, sales: 100, ratio: 301, returnRatio: 301 },
64 { date: '2020', profit: 30, sales: 3200, ratio: 32, returnRatio: 30 },
65 { date: '2021', profit: 30, sales: 300, ratio: 103, returnRatio: 503 },
66 { date: '2022', profit: 50, sales: 2400, ratio: 30, returnRatio: 24 },
67 { date: '2023', profit: 40, sales: 500, ratio: 305, returnRatio: 305 },
68 ],
69 dimensions: [
70 {
71 id: 'date',
72 alias: '日期',
73 },
74 ],
75 }
76 return <PivotChart vseed={vseed} />
77})