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

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 (157) hide show
  1. package/README.md +6 -4
  2. package/README.zh-CN.md +6 -4
  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 +2 -1
  18. package/dist/cjs/vis/fishbone-diagram/index.d.ts +35 -0
  19. package/dist/cjs/vis/fishbone-diagram/index.js +183 -0
  20. package/dist/cjs/vis/flow-diagram/index.d.ts +27 -0
  21. package/dist/cjs/vis/flow-diagram/index.js +271 -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 +375 -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 +214 -0
  30. package/dist/cjs/vis/network-graph/index.d.ts +59 -0
  31. package/dist/cjs/vis/network-graph/index.js +166 -0
  32. package/dist/cjs/vis/organization-chart/index.d.ts +64 -0
  33. package/dist/cjs/vis/organization-chart/index.js +191 -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.js +2 -1
  39. package/dist/cjs/vis/summary/index.js +17 -3
  40. package/dist/cjs/vis/table/index.d.ts +1 -0
  41. package/dist/cjs/vis/table/index.js +37 -1
  42. package/dist/cjs/vis/treemap/index.js +2 -1
  43. package/dist/cjs/vis/venn/index.d.ts +2 -1
  44. package/dist/cjs/vis/venn/index.js +18 -3
  45. package/dist/cjs/vis/violin/index.js +2 -1
  46. package/dist/cjs/vis/waterfall/index.d.ts +6 -9
  47. package/dist/cjs/vis/waterfall/index.js +28 -5
  48. package/dist/cjs/vis/word-cloud/index.js +2 -1
  49. package/dist/cjs/vis-wrapper/icons.js +2 -2
  50. package/dist/cjs/vis-wrapper/index.d.ts +1 -0
  51. package/dist/cjs/vis-wrapper/index.js +27 -16
  52. package/dist/cjs/vis-wrapper/styles.d.ts +1 -1
  53. package/dist/cjs/vis-wrapper/styles.js +8 -1
  54. package/dist/esm/gpt-vis/index.d.ts +8 -1
  55. package/dist/esm/gpt-vis/index.js +47 -26
  56. package/dist/esm/index.d.ts +15 -2
  57. package/dist/esm/index.js +7 -1
  58. package/dist/esm/syntax/parser.d.ts +17 -2
  59. package/dist/esm/syntax/parser.js +248 -90
  60. package/dist/esm/util/container.d.ts +5 -0
  61. package/dist/esm/util/container.js +20 -0
  62. package/dist/esm/util/theme.d.ts +5 -0
  63. package/dist/esm/util/theme.js +9 -0
  64. package/dist/esm/vis/area/index.js +3 -2
  65. package/dist/esm/vis/bar/index.js +7 -6
  66. package/dist/esm/vis/boxplot/index.js +17 -4
  67. package/dist/esm/vis/column/index.js +7 -6
  68. package/dist/esm/vis/dual-axes/index.js +3 -2
  69. package/dist/esm/vis/fishbone-diagram/index.d.ts +35 -0
  70. package/dist/esm/vis/fishbone-diagram/index.js +218 -0
  71. package/dist/esm/vis/flow-diagram/index.d.ts +27 -0
  72. package/dist/esm/vis/flow-diagram/index.js +342 -0
  73. package/dist/esm/vis/funnel/index.js +3 -2
  74. package/dist/esm/vis/histogram/index.js +6 -7
  75. package/dist/esm/vis/indented-tree/index.d.ts +40 -0
  76. package/dist/esm/vis/indented-tree/index.js +564 -0
  77. package/dist/esm/vis/line/index.js +3 -2
  78. package/dist/esm/vis/liquid/index.js +3 -2
  79. package/dist/esm/vis/mindmap/index.d.ts +32 -0
  80. package/dist/esm/vis/mindmap/index.js +315 -0
  81. package/dist/esm/vis/network-graph/index.d.ts +59 -0
  82. package/dist/esm/vis/network-graph/index.js +240 -0
  83. package/dist/esm/vis/organization-chart/index.d.ts +64 -0
  84. package/dist/esm/vis/organization-chart/index.js +269 -0
  85. package/dist/esm/vis/pie/index.js +4 -8
  86. package/dist/esm/vis/radar/index.d.ts +1 -0
  87. package/dist/esm/vis/radar/index.js +20 -4
  88. package/dist/esm/vis/sankey/index.js +3 -2
  89. package/dist/esm/vis/scatter/index.js +3 -2
  90. package/dist/esm/vis/summary/index.js +25 -4
  91. package/dist/esm/vis/table/index.d.ts +1 -0
  92. package/dist/esm/vis/table/index.js +9 -2
  93. package/dist/esm/vis/treemap/index.js +3 -2
  94. package/dist/esm/vis/venn/index.d.ts +2 -1
  95. package/dist/esm/vis/venn/index.js +29 -4
  96. package/dist/esm/vis/violin/index.js +3 -2
  97. package/dist/esm/vis/waterfall/index.d.ts +6 -9
  98. package/dist/esm/vis/waterfall/index.js +27 -9
  99. package/dist/esm/vis/word-cloud/index.js +3 -2
  100. package/dist/esm/vis-wrapper/icons.js +2 -2
  101. package/dist/esm/vis-wrapper/index.d.ts +1 -0
  102. package/dist/esm/vis-wrapper/index.js +15 -10
  103. package/dist/esm/vis-wrapper/styles.d.ts +1 -1
  104. package/dist/esm/vis-wrapper/styles.js +1 -1
  105. package/dist/umd/index.min.js +1 -1
  106. package/package.json +19 -19
  107. package/src/gpt-vis/index.ts +0 -283
  108. package/src/index.ts +0 -44
  109. package/src/readme.md +0 -37
  110. package/src/syntax/index.ts +0 -2
  111. package/src/syntax/parser.ts +0 -411
  112. package/src/types/index.ts +0 -29
  113. package/src/util/theme.ts +0 -167
  114. package/src/vis/area/README.md +0 -143
  115. package/src/vis/area/index.ts +0 -212
  116. package/src/vis/bar/README.md +0 -158
  117. package/src/vis/bar/index.ts +0 -186
  118. package/src/vis/boxplot/README.md +0 -168
  119. package/src/vis/boxplot/index.ts +0 -162
  120. package/src/vis/column/README.md +0 -158
  121. package/src/vis/column/index.ts +0 -185
  122. package/src/vis/dual-axes/README.md +0 -191
  123. package/src/vis/dual-axes/index.ts +0 -218
  124. package/src/vis/funnel/README.md +0 -143
  125. package/src/vis/funnel/index.ts +0 -238
  126. package/src/vis/histogram/README.md +0 -130
  127. package/src/vis/histogram/index.ts +0 -153
  128. package/src/vis/line/README.md +0 -138
  129. package/src/vis/line/index.ts +0 -159
  130. package/src/vis/liquid/README.md +0 -150
  131. package/src/vis/liquid/index.ts +0 -130
  132. package/src/vis/pie/README.md +0 -127
  133. package/src/vis/pie/index.ts +0 -163
  134. package/src/vis/radar/README.md +0 -184
  135. package/src/vis/radar/index.ts +0 -214
  136. package/src/vis/sankey/README.md +0 -144
  137. package/src/vis/sankey/index.ts +0 -144
  138. package/src/vis/scatter/README.md +0 -145
  139. package/src/vis/scatter/index.ts +0 -147
  140. package/src/vis/summary/README.md +0 -272
  141. package/src/vis/summary/index.ts +0 -91
  142. package/src/vis/table/README.md +0 -174
  143. package/src/vis/table/index.ts +0 -241
  144. package/src/vis/treemap/README.md +0 -199
  145. package/src/vis/treemap/index.ts +0 -167
  146. package/src/vis/venn/README.md +0 -153
  147. package/src/vis/venn/index.ts +0 -149
  148. package/src/vis/violin/README.md +0 -168
  149. package/src/vis/violin/index.ts +0 -216
  150. package/src/vis/waterfall/README.md +0 -178
  151. package/src/vis/waterfall/index.ts +0 -258
  152. package/src/vis/word-cloud/README.md +0 -137
  153. package/src/vis/word-cloud/index.ts +0 -137
  154. package/src/vis-wrapper/README.md +0 -159
  155. package/src/vis-wrapper/icons.ts +0 -35
  156. package/src/vis-wrapper/index.ts +0 -276
  157. 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