@antv/gpt-vis 1.0.0-beta.1 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (159) hide show
  1. package/README.md +223 -47
  2. package/README.zh-CN.md +227 -51
  3. package/dist/cjs/gpt-vis/index.d.ts +8 -1
  4. package/dist/cjs/gpt-vis/index.js +43 -20
  5. package/dist/cjs/index.d.ts +15 -2
  6. package/dist/cjs/index.js +22 -2
  7. package/dist/cjs/syntax/parser.d.ts +17 -2
  8. package/dist/cjs/syntax/parser.js +151 -38
  9. package/dist/cjs/util/container.d.ts +5 -0
  10. package/dist/cjs/util/container.js +43 -0
  11. package/dist/cjs/util/theme.d.ts +5 -0
  12. package/dist/cjs/util/theme.js +9 -2
  13. package/dist/cjs/vis/area/index.js +2 -1
  14. package/dist/cjs/vis/bar/index.js +5 -4
  15. package/dist/cjs/vis/boxplot/index.js +7 -2
  16. package/dist/cjs/vis/column/index.js +5 -4
  17. package/dist/cjs/vis/dual-axes/index.js +3 -3
  18. package/dist/cjs/vis/fishbone-diagram/index.d.ts +35 -0
  19. package/dist/cjs/vis/fishbone-diagram/index.js +191 -0
  20. package/dist/cjs/vis/flow-diagram/index.d.ts +27 -0
  21. package/dist/cjs/vis/flow-diagram/index.js +287 -0
  22. package/dist/cjs/vis/funnel/index.js +2 -1
  23. package/dist/cjs/vis/histogram/index.js +3 -7
  24. package/dist/cjs/vis/indented-tree/index.d.ts +40 -0
  25. package/dist/cjs/vis/indented-tree/index.js +385 -0
  26. package/dist/cjs/vis/line/index.js +2 -1
  27. package/dist/cjs/vis/liquid/index.js +2 -1
  28. package/dist/cjs/vis/mindmap/index.d.ts +32 -0
  29. package/dist/cjs/vis/mindmap/index.js +222 -0
  30. package/dist/cjs/vis/network-graph/index.d.ts +59 -0
  31. package/dist/cjs/vis/network-graph/index.js +175 -0
  32. package/dist/cjs/vis/organization-chart/index.d.ts +64 -0
  33. package/dist/cjs/vis/organization-chart/index.js +200 -0
  34. package/dist/cjs/vis/pie/index.js +3 -3
  35. package/dist/cjs/vis/radar/index.d.ts +1 -0
  36. package/dist/cjs/vis/radar/index.js +10 -9
  37. package/dist/cjs/vis/sankey/index.js +2 -1
  38. package/dist/cjs/vis/scatter/index.d.ts +2 -0
  39. package/dist/cjs/vis/scatter/index.js +9 -4
  40. package/dist/cjs/vis/summary/index.js +17 -3
  41. package/dist/cjs/vis/table/index.d.ts +1 -0
  42. package/dist/cjs/vis/table/index.js +37 -1
  43. package/dist/cjs/vis/treemap/index.js +2 -1
  44. package/dist/cjs/vis/venn/index.d.ts +2 -1
  45. package/dist/cjs/vis/venn/index.js +18 -3
  46. package/dist/cjs/vis/violin/index.js +2 -1
  47. package/dist/cjs/vis/waterfall/index.d.ts +6 -9
  48. package/dist/cjs/vis/waterfall/index.js +29 -6
  49. package/dist/cjs/vis/word-cloud/index.js +2 -1
  50. package/dist/cjs/vis-wrapper/icons.js +2 -2
  51. package/dist/cjs/vis-wrapper/index.d.ts +1 -0
  52. package/dist/cjs/vis-wrapper/index.js +27 -16
  53. package/dist/cjs/vis-wrapper/styles.d.ts +1 -1
  54. package/dist/cjs/vis-wrapper/styles.js +8 -1
  55. package/dist/esm/gpt-vis/index.d.ts +8 -1
  56. package/dist/esm/gpt-vis/index.js +47 -26
  57. package/dist/esm/index.d.ts +15 -2
  58. package/dist/esm/index.js +7 -1
  59. package/dist/esm/syntax/parser.d.ts +17 -2
  60. package/dist/esm/syntax/parser.js +248 -90
  61. package/dist/esm/util/container.d.ts +5 -0
  62. package/dist/esm/util/container.js +20 -0
  63. package/dist/esm/util/theme.d.ts +5 -0
  64. package/dist/esm/util/theme.js +9 -0
  65. package/dist/esm/vis/area/index.js +3 -2
  66. package/dist/esm/vis/bar/index.js +7 -6
  67. package/dist/esm/vis/boxplot/index.js +17 -4
  68. package/dist/esm/vis/column/index.js +7 -6
  69. package/dist/esm/vis/dual-axes/index.js +13 -5
  70. package/dist/esm/vis/fishbone-diagram/index.d.ts +35 -0
  71. package/dist/esm/vis/fishbone-diagram/index.js +219 -0
  72. package/dist/esm/vis/flow-diagram/index.d.ts +27 -0
  73. package/dist/esm/vis/flow-diagram/index.js +349 -0
  74. package/dist/esm/vis/funnel/index.js +3 -2
  75. package/dist/esm/vis/histogram/index.js +6 -7
  76. package/dist/esm/vis/indented-tree/index.d.ts +40 -0
  77. package/dist/esm/vis/indented-tree/index.js +569 -0
  78. package/dist/esm/vis/line/index.js +3 -2
  79. package/dist/esm/vis/liquid/index.js +3 -2
  80. package/dist/esm/vis/mindmap/index.d.ts +32 -0
  81. package/dist/esm/vis/mindmap/index.js +316 -0
  82. package/dist/esm/vis/network-graph/index.d.ts +59 -0
  83. package/dist/esm/vis/network-graph/index.js +242 -0
  84. package/dist/esm/vis/organization-chart/index.d.ts +64 -0
  85. package/dist/esm/vis/organization-chart/index.js +271 -0
  86. package/dist/esm/vis/pie/index.js +4 -8
  87. package/dist/esm/vis/radar/index.d.ts +1 -0
  88. package/dist/esm/vis/radar/index.js +20 -4
  89. package/dist/esm/vis/sankey/index.js +3 -2
  90. package/dist/esm/vis/scatter/index.d.ts +2 -0
  91. package/dist/esm/vis/scatter/index.js +15 -4
  92. package/dist/esm/vis/summary/index.js +25 -4
  93. package/dist/esm/vis/table/index.d.ts +1 -0
  94. package/dist/esm/vis/table/index.js +9 -2
  95. package/dist/esm/vis/treemap/index.js +3 -2
  96. package/dist/esm/vis/venn/index.d.ts +2 -1
  97. package/dist/esm/vis/venn/index.js +29 -4
  98. package/dist/esm/vis/violin/index.js +3 -2
  99. package/dist/esm/vis/waterfall/index.d.ts +6 -9
  100. package/dist/esm/vis/waterfall/index.js +33 -13
  101. package/dist/esm/vis/word-cloud/index.js +3 -2
  102. package/dist/esm/vis-wrapper/icons.js +2 -2
  103. package/dist/esm/vis-wrapper/index.d.ts +1 -0
  104. package/dist/esm/vis-wrapper/index.js +15 -10
  105. package/dist/esm/vis-wrapper/styles.d.ts +1 -1
  106. package/dist/esm/vis-wrapper/styles.js +1 -1
  107. package/dist/umd/index.min.js +1 -1
  108. package/package.json +17 -21
  109. package/src/gpt-vis/index.ts +0 -283
  110. package/src/index.ts +0 -44
  111. package/src/readme.md +0 -37
  112. package/src/syntax/index.ts +0 -2
  113. package/src/syntax/parser.ts +0 -411
  114. package/src/types/index.ts +0 -29
  115. package/src/util/theme.ts +0 -167
  116. package/src/vis/area/README.md +0 -143
  117. package/src/vis/area/index.ts +0 -212
  118. package/src/vis/bar/README.md +0 -158
  119. package/src/vis/bar/index.ts +0 -186
  120. package/src/vis/boxplot/README.md +0 -168
  121. package/src/vis/boxplot/index.ts +0 -162
  122. package/src/vis/column/README.md +0 -158
  123. package/src/vis/column/index.ts +0 -185
  124. package/src/vis/dual-axes/README.md +0 -191
  125. package/src/vis/dual-axes/index.ts +0 -218
  126. package/src/vis/funnel/README.md +0 -143
  127. package/src/vis/funnel/index.ts +0 -238
  128. package/src/vis/histogram/README.md +0 -130
  129. package/src/vis/histogram/index.ts +0 -153
  130. package/src/vis/line/README.md +0 -138
  131. package/src/vis/line/index.ts +0 -159
  132. package/src/vis/liquid/README.md +0 -150
  133. package/src/vis/liquid/index.ts +0 -130
  134. package/src/vis/pie/README.md +0 -127
  135. package/src/vis/pie/index.ts +0 -163
  136. package/src/vis/radar/README.md +0 -184
  137. package/src/vis/radar/index.ts +0 -214
  138. package/src/vis/sankey/README.md +0 -144
  139. package/src/vis/sankey/index.ts +0 -144
  140. package/src/vis/scatter/README.md +0 -145
  141. package/src/vis/scatter/index.ts +0 -147
  142. package/src/vis/summary/README.md +0 -272
  143. package/src/vis/summary/index.ts +0 -91
  144. package/src/vis/table/README.md +0 -174
  145. package/src/vis/table/index.ts +0 -241
  146. package/src/vis/treemap/README.md +0 -199
  147. package/src/vis/treemap/index.ts +0 -167
  148. package/src/vis/venn/README.md +0 -153
  149. package/src/vis/venn/index.ts +0 -149
  150. package/src/vis/violin/README.md +0 -168
  151. package/src/vis/violin/index.ts +0 -216
  152. package/src/vis/waterfall/README.md +0 -178
  153. package/src/vis/waterfall/index.ts +0 -258
  154. package/src/vis/word-cloud/README.md +0 -137
  155. package/src/vis/word-cloud/index.ts +0 -137
  156. package/src/vis-wrapper/README.md +0 -159
  157. package/src/vis-wrapper/icons.ts +0 -35
  158. package/src/vis-wrapper/index.ts +0 -276
  159. package/src/vis-wrapper/styles.ts +0 -195
@@ -1,191 +0,0 @@
1
- # DualAxes
2
-
3
- A dual-axes chart component that combines column and line charts for visualizing two different data series with different scales, built with G2 5.0.
4
-
5
- ## Usage
6
-
7
- ```ts
8
- import { DualAxes } from '@antv/gpt-vis/ai';
9
-
10
- const dualAxes = DualAxes({
11
- container: '#container',
12
- width: 600,
13
- height: 400,
14
- });
15
-
16
- dualAxes.render({
17
- categories: ['2018', '2019', '2020', '2021', '2022'],
18
- series: [
19
- {
20
- type: 'column',
21
- data: [91.9, 99.1, 101.6, 114.4, 121],
22
- axisYTitle: 'Sales',
23
- },
24
- {
25
- type: 'line',
26
- data: [0.055, 0.06, 0.062, 0.07, 0.075],
27
- axisYTitle: 'Profit Rate',
28
- },
29
- ],
30
- });
31
-
32
- dualAxes.destroy();
33
- ```
34
-
35
- ## Configuration
36
-
37
- ### Constructor Options (DualAxesOptions)
38
-
39
- | Property | Type | Default | Description |
40
- | --------- | --------------------- | ------- | ----------------------------- |
41
- | container | string \| HTMLElement | - | Container element or selector |
42
- | width | number | 640 | Chart width in pixels |
43
- | height | number | 480 | Chart height in pixels |
44
-
45
- ### Render Config (DualAxesConfig)
46
-
47
- | Property | Type | Default | Description |
48
- | ---------- | ------ | ----------- | ---------------------------- |
49
- | type | string | 'dual-axes' | Chart type |
50
- | categories | Array | - | X-axis categories (required) |
51
- | series | Array | - | Series data array (required) |
52
- | title | string | - | Chart title |
53
- | axisXTitle | string | - | X-axis title |
54
- | theme | string | 'default' | Color theme |
55
- | style | object | - | Chart style configuration |
56
-
57
- ### Series Data Structure
58
-
59
- ```ts
60
- type DualAxesSeriesItem = {
61
- type: 'line' | 'column'; // Series type
62
- data: number[]; // Data values
63
- axisYTitle?: string; // Y-axis title for this series
64
- };
65
- ```
66
-
67
- ### Style Options
68
-
69
- ```ts
70
- style?: {
71
- backgroundColor?: string; // Background color
72
- palette?: string[]; // Color palette
73
- startAtZero?: boolean; // Whether Y-axis starts at zero
74
- }
75
- ```
76
-
77
- ## Examples
78
-
79
- ### Basic Dual-Axes Chart
80
-
81
- ```ts
82
- dualAxes.render({
83
- categories: ['2018', '2019', '2020', '2021', '2022'],
84
- series: [
85
- {
86
- type: 'column',
87
- data: [91.9, 99.1, 101.6, 114.4, 121],
88
- axisYTitle: 'Sales',
89
- },
90
- {
91
- type: 'line',
92
- data: [0.055, 0.06, 0.062, 0.07, 0.075],
93
- axisYTitle: 'Profit Rate',
94
- },
95
- ],
96
- });
97
- ```
98
-
99
- ### With Title and X-Axis Label
100
-
101
- ```ts
102
- dualAxes.render({
103
- categories: ['2018', '2019', '2020', '2021', '2022'],
104
- title: '2018-2022 Sales and Profit Rate',
105
- axisXTitle: 'Year',
106
- series: [
107
- {
108
- type: 'column',
109
- data: [91.9, 99.1, 101.6, 114.4, 121],
110
- axisYTitle: 'Sales',
111
- },
112
- {
113
- type: 'line',
114
- data: [0.055, 0.06, 0.062, 0.07, 0.075],
115
- axisYTitle: 'Profit Rate',
116
- },
117
- ],
118
- });
119
- ```
120
-
121
- ### With Academy Theme
122
-
123
- ```ts
124
- dualAxes.render({
125
- categories: ['2020', '2021', '2022'],
126
- series: [
127
- {
128
- type: 'column',
129
- data: [500, 600, 700],
130
- axisYTitle: 'Revenue',
131
- },
132
- {
133
- type: 'line',
134
- data: [10, 12, 15],
135
- axisYTitle: 'Growth Rate',
136
- },
137
- ],
138
- theme: 'academy',
139
- });
140
- ```
141
-
142
- ### With Custom Styles
143
-
144
- ```ts
145
- dualAxes.render({
146
- categories: ['Jan', 'Feb', 'Mar', 'Apr', 'May'],
147
- series: [
148
- {
149
- type: 'column',
150
- data: [120, 150, 180, 210, 240],
151
- axisYTitle: 'Sales',
152
- },
153
- {
154
- type: 'line',
155
- data: [8, 10, 12, 15, 18],
156
- axisYTitle: 'Growth',
157
- },
158
- ],
159
- style: {
160
- palette: ['#5B8FF9', '#61DDAA'],
161
- backgroundColor: '#F8F9FA',
162
- startAtZero: true,
163
- },
164
- });
165
- ```
166
-
167
- ### Dark Theme
168
-
169
- ```ts
170
- dualAxes.render({
171
- categories: ['Q1', 'Q2', 'Q3', 'Q4'],
172
- series: [
173
- {
174
- type: 'column',
175
- data: [100, 120, 140, 160],
176
- axisYTitle: 'Revenue',
177
- },
178
- {
179
- type: 'line',
180
- data: [5, 6, 7, 8],
181
- axisYTitle: 'Profit',
182
- },
183
- ],
184
- theme: 'dark',
185
- });
186
- ```
187
-
188
- ## Methods
189
-
190
- - `render(config: DualAxesConfig): void` - Render or update the chart
191
- - `destroy(): void` - Destroy the chart instance and clean up resources
@@ -1,218 +0,0 @@
1
- import { Chart } from '@antv/g2';
2
- import type { VisualizationOptions } from '../../types';
3
- import { getBackgroundColor, getThemeColors, getThemeObject } from '../../util/theme';
4
-
5
- /**
6
- * DualAxesSeriesItem defines a single series in the dual-axes chart.
7
- */
8
- export type DualAxesSeriesItem = {
9
- type: 'line' | 'column';
10
- data: number[];
11
- axisYTitle?: string;
12
- };
13
-
14
- /**
15
- * DualAxesConfig defines the configuration for rendering the dual-axes chart.
16
- */
17
- export interface DualAxesConfig {
18
- type?: 'dual-axes';
19
- categories: string[];
20
- series: DualAxesSeriesItem[];
21
- title?: string;
22
- axisXTitle?: string;
23
- theme?: 'default' | 'academy' | 'dark';
24
- style?: {
25
- backgroundColor?: string;
26
- palette?: string[];
27
- startAtZero?: boolean;
28
- };
29
- }
30
-
31
- /**
32
- * DualAxesInstance represents a dual-axes chart instance with render and destroy methods.
33
- */
34
- export interface DualAxesInstance {
35
- render: (config: DualAxesConfig) => void;
36
- destroy: () => void;
37
- }
38
-
39
- /**
40
- * Transform series data to G2 format.
41
- * Combines multiple series into a single data array with categories.
42
- */
43
- function transformData(series: DualAxesSeriesItem[], categories: string[]) {
44
- return categories.map((category, index) => {
45
- const dataPoint: any = { category };
46
- series.forEach((s, i) => {
47
- const yField = s.axisYTitle || `value_${i + 1}`;
48
- dataPoint[yField] = s.data[index];
49
- });
50
- return dataPoint;
51
- });
52
- }
53
-
54
- /**
55
- * DualAxes chart component using G2 5.0.
56
- *
57
- * @example
58
- * ```ts
59
- * const dualAxes = DualAxes({
60
- * container: '#container',
61
- * width: 600,
62
- * height: 400,
63
- * });
64
- *
65
- * dualAxes.render({
66
- * type: 'dual-axes',
67
- * categories: ['2018', '2019', '2020', '2021', '2022'],
68
- * series: [
69
- * {
70
- * type: 'column',
71
- * data: [91.9, 99.1, 101.6, 114.4, 121],
72
- * axisYTitle: '销售额',
73
- * },
74
- * {
75
- * type: 'line',
76
- * data: [0.055, 0.06, 0.062, 0.07, 0.075],
77
- * axisYTitle: '利润率',
78
- * },
79
- * ],
80
- * });
81
- *
82
- * dualAxes.destroy();
83
- * ```
84
- */
85
- export const DualAxes = (options: VisualizationOptions): DualAxesInstance => {
86
- const { container, width, height, theme: chartTheme = 'default' } = options;
87
- let chart: Chart | null = null;
88
-
89
- /**
90
- * Render the dual-axes chart with the given configuration.
91
- */
92
- const render = (config: DualAxesConfig): void => {
93
- const { categories, series, theme = chartTheme, title, axisXTitle, style = {} } = config;
94
-
95
- // Clean up previous chart if exists
96
- if (chart) {
97
- chart.destroy();
98
- }
99
-
100
- const { startAtZero = false } = style;
101
- const colors = style.palette || getThemeColors(theme);
102
- const backgroundColor = style.backgroundColor || getBackgroundColor(theme);
103
-
104
- // Transform data
105
- const data = transformData(series, categories);
106
-
107
- // Create chart
108
- chart = new Chart({
109
- container,
110
- width,
111
- height,
112
- autoFit: true,
113
- });
114
-
115
- // Sort series: column first, then line (line rendered last appears on top)
116
- const sortedSeries = [...series].sort((a, b) => {
117
- const order = ['column', 'line'];
118
- return order.indexOf(a.type) - order.indexOf(b.type);
119
- });
120
-
121
- // Create children configurations for each series
122
- const children = sortedSeries.map((item, index) => {
123
- const yField = item.axisYTitle || `value_${index + 1}`;
124
- const color = colors[index % colors.length];
125
-
126
- if (item.type === 'column') {
127
- return {
128
- type: 'interval',
129
- encode: {
130
- x: 'category',
131
- y: yField,
132
- color: () => yField,
133
- },
134
- scale: {
135
- y: { nice: true, zero: startAtZero },
136
- color: { range: [color] },
137
- },
138
- axis: {
139
- y: { title: item.axisYTitle || '' },
140
- },
141
- style: {
142
- columnWidthRatio: 0.8,
143
- radiusTopLeft: 4,
144
- radiusTopRight: 4,
145
- },
146
- };
147
- } else {
148
- // line type
149
- return {
150
- type: 'line',
151
- encode: {
152
- x: 'category',
153
- y: yField,
154
- shape: 'smooth',
155
- color: () => yField,
156
- },
157
- scale: {
158
- y: { independent: true, zero: startAtZero },
159
- color: { range: [color] },
160
- },
161
- axis: {
162
- y: { position: 'right', title: item.axisYTitle || '' },
163
- },
164
- style: {
165
- lineWidth: 2,
166
- },
167
- };
168
- }
169
- });
170
-
171
- // Configure chart options
172
- // Note: Using 'any' type due to G2's complex type system with transformations
173
- // This is consistent with how G2 5.0 is used elsewhere in the codebase
174
- const chartOptions: any = {
175
- type: 'view',
176
- data,
177
- title: title ?? '',
178
- children,
179
- axis: {
180
- x: { title: axisXTitle || false },
181
- },
182
- scale: {
183
- y: { nice: true },
184
- },
185
- legend: {
186
- color: {
187
- position: 'top',
188
- itemMarker: (v: string, index: number) => {
189
- const seriesItem = series[index];
190
- return seriesItem?.type === 'line' ? 'smooth' : 'rect';
191
- },
192
- },
193
- },
194
- viewStyle: {
195
- viewFill: backgroundColor,
196
- },
197
- theme: getThemeObject(theme),
198
- };
199
-
200
- chart.options(chartOptions);
201
- chart.render();
202
- };
203
-
204
- /**
205
- * Destroy the chart instance and clean up resources.
206
- */
207
- const destroy = (): void => {
208
- if (chart) {
209
- chart.destroy();
210
- chart = null;
211
- }
212
- };
213
-
214
- return {
215
- render,
216
- destroy,
217
- };
218
- };
@@ -1,143 +0,0 @@
1
- # Funnel
2
-
3
- A funnel chart component for displaying multi-stage data flow and conversion rates, built with G2 5.0. Ideal for analyzing sales processes, user conversion, and activity participation.
4
-
5
- ## Usage
6
-
7
- ```ts
8
- import { Funnel } from '@antv/gpt-vis/ai';
9
-
10
- const funnel = Funnel({
11
- container: '#container',
12
- width: 600,
13
- height: 400,
14
- });
15
-
16
- funnel.render({
17
- data: [
18
- { category: '访问', value: 1000 },
19
- { category: '咨询', value: 600 },
20
- { category: '下单', value: 300 },
21
- { category: '成交', value: 120 },
22
- ],
23
- });
24
-
25
- funnel.destroy();
26
- ```
27
-
28
- ## Configuration
29
-
30
- ### Constructor Options (FunnelOptions)
31
-
32
- | Property | Type | Default | Description |
33
- | --------- | --------------------- | ------- | ----------------------------- |
34
- | container | string \| HTMLElement | - | Container element or selector |
35
- | width | number | 640 | Chart width in pixels |
36
- | height | number | 480 | Chart height in pixels |
37
-
38
- ### Render Config (FunnelConfig)
39
-
40
- | Property | Type | Default | Description |
41
- | -------- | -------------------------------- | --------- | ------------------------- |
42
- | data | FunnelDataItem[] | - | Chart data array |
43
- | theme | 'default' \| 'academy' \| 'dark' | 'default' | Color theme |
44
- | title | string | - | Chart title |
45
- | style | object | - | Chart style configuration |
46
-
47
- ### FunnelDataItem
48
-
49
- ```ts
50
- type FunnelDataItem = {
51
- category: string; // Stage name
52
- value: number; // Stage value
53
- };
54
- ```
55
-
56
- ### Style Options
57
-
58
- ```ts
59
- style?: {
60
- backgroundColor?: string; // Background color
61
- palette?: string[]; // Color palette
62
- }
63
- ```
64
-
65
- ## Examples
66
-
67
- ### Basic Funnel Chart
68
-
69
- ```ts
70
- funnel.render({
71
- data: [
72
- { category: '访问', value: 1000 },
73
- { category: '咨询', value: 600 },
74
- { category: '下单', value: 300 },
75
- { category: '成交', value: 120 },
76
- ],
77
- });
78
- ```
79
-
80
- ### With Title
81
-
82
- ```ts
83
- funnel.render({
84
- data: [
85
- { category: '访问', value: 1000 },
86
- { category: '咨询', value: 600 },
87
- { category: '下单', value: 300 },
88
- { category: '成交', value: 120 },
89
- ],
90
- title: '销售漏斗',
91
- });
92
- ```
93
-
94
- ### Academy Theme
95
-
96
- ```ts
97
- funnel.render({
98
- data: [
99
- { category: '注册', value: 800 },
100
- { category: '激活', value: 500 },
101
- { category: '付费', value: 200 },
102
- ],
103
- theme: 'academy',
104
- title: '用户转化流程',
105
- });
106
- ```
107
-
108
- ### Dark Theme
109
-
110
- ```ts
111
- funnel.render({
112
- data: [
113
- { category: '访问', value: 1000 },
114
- { category: '咨询', value: 600 },
115
- { category: '下单', value: 300 },
116
- { category: '成交', value: 120 },
117
- ],
118
- theme: 'dark',
119
- });
120
- ```
121
-
122
- ### Custom Styles
123
-
124
- ```ts
125
- // Custom colors
126
- funnel.render({
127
- data: [
128
- { category: '报名', value: 1500 },
129
- { category: '签到', value: 900 },
130
- { category: '参与', value: 700 },
131
- ],
132
- title: '活动参与漏斗',
133
- style: {
134
- palette: ['#FF7F50', '#87CEFA', '#32CD32'],
135
- backgroundColor: '#FFF8DC',
136
- },
137
- });
138
- ```
139
-
140
- ## Methods
141
-
142
- - `render(config: FunnelConfig): void` - Render or update the chart
143
- - `destroy(): void` - Destroy the chart instance and clean up resources