@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,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