@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,238 +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
- * FunnelDataItem is the type for each data item in the funnel chart.
7
- */
8
- export type FunnelDataItem = {
9
- category: string;
10
- value: number;
11
- };
12
-
13
- /**
14
- * FunnelConfig defines the configuration for rendering the funnel chart.
15
- */
16
- export interface FunnelConfig {
17
- type?: 'funnel';
18
- data: FunnelDataItem[];
19
- theme?: 'default' | 'academy' | 'dark';
20
- title?: string;
21
- style?: {
22
- backgroundColor?: string;
23
- palette?: string[];
24
- };
25
- }
26
-
27
- /**
28
- * FunnelInstance represents a funnel chart instance with render and destroy methods.
29
- */
30
- export interface FunnelInstance {
31
- render: (config: FunnelConfig) => void;
32
- destroy: () => void;
33
- }
34
-
35
- /**
36
- * Funnel chart component using G2 5.0.
37
- *
38
- * @example
39
- * ```ts
40
- * const funnel = Funnel({
41
- * container: '#container',
42
- * width: 600,
43
- * height: 400,
44
- * });
45
- *
46
- * funnel.render({
47
- * type: 'funnel',
48
- * data: [
49
- * { category: '访问', value: 1000 },
50
- * { category: '咨询', value: 600 },
51
- * { category: '下单', value: 300 },
52
- * { category: '成交', value: 120 },
53
- * ],
54
- * theme: 'academy'
55
- * });
56
- *
57
- * funnel.destroy();
58
- * ```
59
- */
60
- export const Funnel = (options: VisualizationOptions): FunnelInstance => {
61
- const { container, width, height, theme: chartTheme = 'default' } = options;
62
- let chart: Chart | null = null;
63
-
64
- /**
65
- * Render the funnel chart with the given configuration.
66
- */
67
- const render = (config: FunnelConfig): void => {
68
- const { data = [], theme = chartTheme, title, style = {} } = config;
69
-
70
- // Clean up previous chart if exists
71
- if (chart) {
72
- chart.destroy();
73
- }
74
-
75
- // Get colors from style.palette or theme defaults
76
- const colors = style.palette || getThemeColors(theme);
77
- const backgroundColor = style.backgroundColor || getBackgroundColor(theme);
78
-
79
- // Helper function to calculate conversion rate
80
- const conversionRate = (start: any, end: any) => `${((end / start) * 100).toFixed(2)} %`;
81
-
82
- // Create chart
83
- chart = new Chart({
84
- container,
85
- width,
86
- height,
87
- autoFit: true,
88
- paddingLeft: 40,
89
- paddingRight: 68,
90
- });
91
-
92
- // Configure chart options
93
- // Note: Using 'any' type due to G2's complex type system with transformations
94
- // This is consistent with how G2 5.0 is used elsewhere in the codebase
95
- const chartOptions: any = {
96
- type: 'view',
97
- data,
98
- title: title ?? '',
99
- children: [
100
- {
101
- type: 'interval',
102
- data,
103
- encode: {
104
- x: 'category',
105
- y: 'value',
106
- color: 'category',
107
- shape: 'funnel', // Use funnel shape for proper funnel visualization
108
- },
109
- transform: [{ type: 'symmetryY' }],
110
- coordinate: { transform: [{ type: 'transpose' }] },
111
- scale: {
112
- x: { padding: 0 },
113
- color: { range: colors },
114
- },
115
- legend: {
116
- color: {
117
- position: 'top',
118
- layout: {
119
- justifyContent: 'center',
120
- },
121
- },
122
- },
123
- labels: [
124
- // Inside label showing category and value
125
- {
126
- text: (d: any) => `${d.category}\n${d.value}`,
127
- position: 'inside',
128
- transform: [{ type: 'contrastReverse' }],
129
- },
130
- // Connecting line for conversion rate
131
- {
132
- text: (d: any, i: any) => (i !== 0 ? '———' : ''),
133
- style: {
134
- 'font-size': '1px',
135
- color: '#666',
136
- 'letter-spacing': '0px',
137
- },
138
- position: 'top-right',
139
- fill: '#666',
140
- dx: 35,
141
- dy: -8,
142
- },
143
- // Conversion rate label text
144
- {
145
- text: (d: any, i: any) => (i !== 0 ? '转化率' : ''),
146
- position: 'top-right',
147
- textAlign: 'left',
148
- textBaseline: 'middle',
149
- fill: '#666',
150
- dx: 40,
151
- },
152
- // Conversion rate percentage
153
- {
154
- text: (d: any, i: any, dataArray: any) =>
155
- i !== 0 ? conversionRate(dataArray[i - 1].value, dataArray[i].value) : '',
156
- position: 'top-right',
157
- textAlign: 'left',
158
- textBaseline: 'middle',
159
- dx: 80,
160
- },
161
- ],
162
- viewStyle: {
163
- viewFill: backgroundColor,
164
- },
165
- },
166
- // Overall conversion rate connector
167
- {
168
- type: 'connector',
169
- data: [
170
- {
171
- startX: data[0]?.category,
172
- startY: data[data.length - 1]?.category,
173
- endX: 0,
174
- endY: (data[0]?.value - data[data.length - 1]?.value) / 2,
175
- },
176
- ],
177
- encode: { x: 'startX', x1: 'startY', y: 'endX', y1: 'endY' },
178
- style: {
179
- stroke: '#666',
180
- markerEnd: false,
181
- connectLength1: -12,
182
- offset2: -20,
183
- connectorStroke: '#0649f2',
184
- lineDash: [12, 2],
185
- },
186
- labels: [
187
- {
188
- text: '转化率',
189
- position: 'left',
190
- textAlign: 'start',
191
- textBaseline: 'middle',
192
- fill: '#666',
193
- dx: 10,
194
- },
195
- {
196
- text: conversionRate(data[0]?.value, data[data.length - 1]?.value),
197
- position: 'left',
198
- textAlign: 'start',
199
- dx: 50,
200
- fill: '#000',
201
- },
202
- ],
203
- },
204
- ],
205
- axis: false,
206
- tooltip: {
207
- items: [
208
- (d: any) => ({
209
- name: d.category,
210
- value: d.value,
211
- }),
212
- ],
213
- },
214
- viewStyle: {
215
- viewFill: backgroundColor,
216
- },
217
- theme: getThemeObject(theme),
218
- };
219
-
220
- chart.options(chartOptions);
221
- chart.render();
222
- };
223
-
224
- /**
225
- * Destroy the chart instance and clean up resources.
226
- */
227
- const destroy = (): void => {
228
- if (chart) {
229
- chart.destroy();
230
- chart = null;
231
- }
232
- };
233
-
234
- return {
235
- render,
236
- destroy,
237
- };
238
- };
@@ -1,130 +0,0 @@
1
- # Histogram
2
-
3
- A histogram chart component for visualizing data distribution, built with G2 5.0.
4
-
5
- ## Usage
6
-
7
- ```ts
8
- import { Histogram } from '@antv/gpt-vis/ai';
9
-
10
- const histogram = Histogram({
11
- container: '#container',
12
- width: 600,
13
- height: 400,
14
- });
15
-
16
- histogram.render({
17
- data: [78, 88, 60, 100, 95],
18
- binNumber: 5,
19
- title: '成绩分布',
20
- });
21
-
22
- histogram.destroy();
23
- ```
24
-
25
- ## Configuration
26
-
27
- ### Constructor Options (HistogramOptions)
28
-
29
- | Property | Type | Default | Description |
30
- | --------- | --------------------- | ------- | ----------------------------- |
31
- | container | string \| HTMLElement | - | Container element or selector |
32
- | width | number | 640 | Chart width in pixels |
33
- | height | number | 480 | Chart height in pixels |
34
-
35
- ### Render Config (HistogramConfig)
36
-
37
- | Property | Type | Default | Description |
38
- | ---------- | ------ | --------- | ------------------------------- |
39
- | data | Array | - | Numeric data array |
40
- | binNumber | number | - | Number of bins for distribution |
41
- | title | string | - | Chart title |
42
- | axisXTitle | string | - | X-axis title |
43
- | axisYTitle | string | - | Y-axis title |
44
- | theme | string | 'default' | Color theme |
45
- | style | object | - | Chart style configuration |
46
-
47
- ### Data Structure
48
-
49
- ```ts
50
- type HistogramData = number[]; // Array of numeric values
51
- ```
52
-
53
- ### Style Options
54
-
55
- ```ts
56
- style?: {
57
- backgroundColor?: string; // Background color
58
- palette?: string[]; // Color palette
59
- }
60
- ```
61
-
62
- ## Examples
63
-
64
- ### Basic Example
65
-
66
- ```ts
67
- histogram.render({
68
- data: [20, 25, 30, 35],
69
- });
70
- ```
71
-
72
- ### With Bin Number
73
-
74
- ```ts
75
- histogram.render({
76
- data: [78, 88, 60, 100, 95],
77
- binNumber: 5,
78
- title: '成绩分布',
79
- });
80
- ```
81
-
82
- ### With Axis Titles
83
-
84
- ```ts
85
- histogram.render({
86
- data: [
87
- 1.2, 3.4, 3.7, 4.3, 5.2, 5.8, 6.1, 6.5, 6.8, 7.1, 7.3, 7.7, 8.3, 8.6, 8.8, 9.1, 9.2, 9.4, 9.5,
88
- 9.7, 10.5, 10.7, 10.8, 11, 11, 11.1, 11.2, 11.3, 11.4, 11.4, 11.7, 12, 12.9, 12.9, 13.3, 13.7,
89
- 13.8, 13.9, 14, 14.2, 14.5, 15, 15.2, 15.6, 16, 16.3, 17.3, 17.5, 17.9, 18, 18, 20.6, 21, 23.4,
90
- ],
91
- axisXTitle: '花瓣大小分布',
92
- axisYTitle: '花瓣分布数量',
93
- });
94
- ```
95
-
96
- ### With Theme
97
-
98
- ```ts
99
- histogram.render({
100
- data: [78, 88, 60, 100, 95],
101
- binNumber: 5,
102
- theme: 'academy',
103
- });
104
- ```
105
-
106
- ### With Custom Styles
107
-
108
- ```ts
109
- histogram.render({
110
- data: [20, 25, 30, 35, 40, 45, 50],
111
- style: {
112
- palette: ['#FF6B6B'],
113
- },
114
- });
115
- ```
116
-
117
- ### Dark Theme
118
-
119
- ```ts
120
- histogram.render({
121
- data: [78, 88, 60, 100, 95],
122
- binNumber: 5,
123
- theme: 'dark',
124
- });
125
- ```
126
-
127
- ## Methods
128
-
129
- - `render(config: HistogramConfig): void` - Render or update the chart
130
- - `destroy(): void` - Destroy the chart instance and clean up resources
@@ -1,153 +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
- * HistogramConfig defines the configuration for rendering the histogram chart.
7
- */
8
- export interface HistogramConfig {
9
- type?: 'histogram';
10
- data: number[];
11
- binNumber?: number;
12
- title?: string;
13
- axisXTitle?: string;
14
- axisYTitle?: string;
15
- theme?: 'default' | 'academy' | 'dark';
16
- style?: {
17
- backgroundColor?: string;
18
- palette?: string[];
19
- };
20
- }
21
-
22
- /**
23
- * HistogramInstance represents a histogram chart instance with render and destroy methods.
24
- */
25
- export interface HistogramInstance {
26
- render: (config: HistogramConfig) => void;
27
- destroy: () => void;
28
- }
29
-
30
- /**
31
- * Histogram chart component using G2 5.0.
32
- *
33
- * @example
34
- * ```ts
35
- * const histogram = Histogram({
36
- * container: '#container',
37
- * width: 600,
38
- * height: 400,
39
- * });
40
- *
41
- * histogram.render({
42
- * type: 'histogram',
43
- * data: [78, 88, 60, 100, 95],
44
- * binNumber: 5,
45
- * title: '成绩分布',
46
- * theme: 'academy'
47
- * });
48
- *
49
- * histogram.destroy();
50
- * ```
51
- */
52
- export const Histogram = (options: VisualizationOptions): HistogramInstance => {
53
- const { container, width, height, theme: chartTheme = 'default' } = options;
54
- let chart: Chart | null = null;
55
-
56
- /**
57
- * Render the histogram chart with the given configuration.
58
- */
59
- const render = (config: HistogramConfig): void => {
60
- const {
61
- data = [],
62
- theme = chartTheme,
63
- title,
64
- axisXTitle,
65
- axisYTitle,
66
- binNumber,
67
- style = {},
68
- } = config;
69
-
70
- // Clean up previous chart if exists
71
- if (chart) {
72
- chart.destroy();
73
- }
74
-
75
- // Get colors from style.palette or theme defaults
76
- const colors = style.palette || getThemeColors(theme);
77
- const backgroundColor = style.backgroundColor || getBackgroundColor(theme);
78
-
79
- // Create chart
80
- chart = new Chart({
81
- container,
82
- width,
83
- height,
84
- autoFit: true,
85
- });
86
-
87
- // Configure chart options
88
- // Note: Using 'any' type due to G2's complex type system with transformations
89
- // This is consistent with how G2 5.0 is used elsewhere in the codebase
90
- const chartOptions: any = {
91
- type: 'interval',
92
- data,
93
- title: title ?? '',
94
- encode: {
95
- x: (d: any) => d,
96
- y: 'count',
97
- color: () => 'all',
98
- },
99
- // binX transform groups continuous data into bins and counts frequency
100
- transform: [{ type: 'binX', y: 'count', thresholds: binNumber }],
101
- style: {
102
- minHeight: 1,
103
- columnWidthRatio: 1,
104
- inset: 0.5,
105
- },
106
- axis: {
107
- x: {
108
- title: axisXTitle,
109
- },
110
- y: {
111
- title: axisYTitle,
112
- },
113
- },
114
- scale: {
115
- y: {
116
- nice: true,
117
- },
118
- color: { range: colors },
119
- },
120
- legend: false,
121
- tooltip: {
122
- items: [
123
- (d: any) => ({
124
- name: '频数',
125
- value: d.count,
126
- }),
127
- ],
128
- },
129
- viewStyle: {
130
- viewFill: backgroundColor,
131
- },
132
- theme: getThemeObject(theme),
133
- };
134
-
135
- chart.options(chartOptions);
136
- chart.render();
137
- };
138
-
139
- /**
140
- * Destroy the chart instance and clean up resources.
141
- */
142
- const destroy = (): void => {
143
- if (chart) {
144
- chart.destroy();
145
- chart = null;
146
- }
147
- };
148
-
149
- return {
150
- render,
151
- destroy,
152
- };
153
- };
@@ -1,138 +0,0 @@
1
- # Line
2
-
3
- A line chart component for visualizing trends over time or ordered categories, built with G2 5.0.
4
-
5
- ## Usage
6
-
7
- ```ts
8
- import { Line } from '@antv/gpt-vis/ai';
9
-
10
- const line = Line({
11
- container: '#container',
12
- width: 600,
13
- height: 400,
14
- });
15
-
16
- line.render({
17
- data: [
18
- { time: '2015 年', value: 1700 },
19
- { time: '2016 年', value: 1500 },
20
- { time: '2017 年', value: 1200 },
21
- ],
22
- title: '出生人口变化',
23
- axisXTitle: '年份',
24
- axisYTitle: '出生人口(万人)',
25
- });
26
-
27
- line.destroy();
28
- ```
29
-
30
- ## Configuration
31
-
32
- ### Constructor Options (LineOptions)
33
-
34
- | Property | Type | Default | Description |
35
- | --------- | --------------------- | ------- | ----------------------------- |
36
- | container | string \| HTMLElement | - | Container element or selector |
37
- | width | number | 640 | Chart width in pixels |
38
- | height | number | 480 | Chart height in pixels |
39
-
40
- ### Render Config (LineConfig)
41
-
42
- | Property | Type | Default | Description |
43
- | ---------- | ------ | --------- | ------------------------- |
44
- | data | Array | - | Chart data array |
45
- | type | string | 'line' | Chart type identifier |
46
- | title | string | - | Chart title |
47
- | axisXTitle | string | - | X-axis title |
48
- | axisYTitle | string | - | Y-axis title |
49
- | theme | string | 'default' | Color theme |
50
- | style | object | - | Chart style configuration |
51
-
52
- ### Data Structure
53
-
54
- ```ts
55
- type LineDataItem = {
56
- time: string | number; // Time or category value
57
- value: number; // Numeric value
58
- group?: string; // Optional group name for multi-line charts
59
- };
60
- ```
61
-
62
- ### Style Options
63
-
64
- | Property | Type | Default | Description |
65
- | --------------- | -------- | ------- | ------------------------------------------- |
66
- | backgroundColor | string | - | Background color of the chart |
67
- | palette | string[] | - | Array of colors for the chart color palette |
68
- | lineWidth | number | 2 | Width of the line in pixels |
69
-
70
- ## Examples
71
-
72
- ### Basic Line Chart
73
-
74
- ```ts
75
- line.render({
76
- data: [
77
- { time: 2015, value: 7200.0 },
78
- { time: 2016, value: 3660.0 },
79
- { time: 2017, value: 4100.0 },
80
- ],
81
- axisXTitle: 'year',
82
- axisYTitle: 'industrial',
83
- });
84
- ```
85
-
86
- ### Multi-Line Chart with Groups
87
-
88
- ```ts
89
- line.render({
90
- data: [
91
- { time: '2015 年', value: 1700, group: '出生人口' },
92
- { time: '2015 年', value: 965, group: '死亡人口' },
93
- { time: '2016 年', value: 1500, group: '出生人口' },
94
- { time: '2016 年', value: 846, group: '死亡人口' },
95
- { time: '2017 年', value: 1200, group: '出生人口' },
96
- { time: '2017 年', value: 782, group: '死亡人口' },
97
- ],
98
- title: '出生人口与死亡人口变化',
99
- axisXTitle: '年份',
100
- axisYTitle: '人口(万人)',
101
- });
102
- ```
103
-
104
- ### With Theme
105
-
106
- ```ts
107
- line.render({
108
- data: [
109
- { time: '2015 年', value: 1700 },
110
- { time: '2016 年', value: 1500 },
111
- { time: '2017 年', value: 1200 },
112
- ],
113
- theme: 'academy',
114
- title: '出生人口变化',
115
- });
116
- ```
117
-
118
- ### With Custom Styles
119
-
120
- ```ts
121
- line.render({
122
- data: [
123
- { time: '2015 年', value: 1700 },
124
- { time: '2016 年', value: 1500 },
125
- { time: '2017 年', value: 1200 },
126
- ],
127
- style: {
128
- palette: ['#FF6B6B', '#4ECDC4', '#45B7D1'],
129
- lineWidth: 3,
130
- backgroundColor: '#F5F5F5',
131
- },
132
- });
133
- ```
134
-
135
- ## Methods
136
-
137
- - `render(config: LineConfig): void` - Render or update the chart
138
- - `destroy(): void` - Destroy the chart instance and clean up resources