@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.
- package/README.md +223 -47
- package/README.zh-CN.md +227 -51
- package/dist/cjs/gpt-vis/index.d.ts +8 -1
- package/dist/cjs/gpt-vis/index.js +43 -20
- package/dist/cjs/index.d.ts +15 -2
- package/dist/cjs/index.js +22 -2
- package/dist/cjs/syntax/parser.d.ts +17 -2
- package/dist/cjs/syntax/parser.js +151 -38
- package/dist/cjs/util/container.d.ts +5 -0
- package/dist/cjs/util/container.js +43 -0
- package/dist/cjs/util/theme.d.ts +5 -0
- package/dist/cjs/util/theme.js +9 -2
- package/dist/cjs/vis/area/index.js +2 -1
- package/dist/cjs/vis/bar/index.js +5 -4
- package/dist/cjs/vis/boxplot/index.js +7 -2
- package/dist/cjs/vis/column/index.js +5 -4
- package/dist/cjs/vis/dual-axes/index.js +3 -3
- package/dist/cjs/vis/fishbone-diagram/index.d.ts +35 -0
- package/dist/cjs/vis/fishbone-diagram/index.js +191 -0
- package/dist/cjs/vis/flow-diagram/index.d.ts +27 -0
- package/dist/cjs/vis/flow-diagram/index.js +287 -0
- package/dist/cjs/vis/funnel/index.js +2 -1
- package/dist/cjs/vis/histogram/index.js +3 -7
- package/dist/cjs/vis/indented-tree/index.d.ts +40 -0
- package/dist/cjs/vis/indented-tree/index.js +385 -0
- package/dist/cjs/vis/line/index.js +2 -1
- package/dist/cjs/vis/liquid/index.js +2 -1
- package/dist/cjs/vis/mindmap/index.d.ts +32 -0
- package/dist/cjs/vis/mindmap/index.js +222 -0
- package/dist/cjs/vis/network-graph/index.d.ts +59 -0
- package/dist/cjs/vis/network-graph/index.js +175 -0
- package/dist/cjs/vis/organization-chart/index.d.ts +64 -0
- package/dist/cjs/vis/organization-chart/index.js +200 -0
- package/dist/cjs/vis/pie/index.js +3 -3
- package/dist/cjs/vis/radar/index.d.ts +1 -0
- package/dist/cjs/vis/radar/index.js +10 -9
- package/dist/cjs/vis/sankey/index.js +2 -1
- package/dist/cjs/vis/scatter/index.d.ts +2 -0
- package/dist/cjs/vis/scatter/index.js +9 -4
- package/dist/cjs/vis/summary/index.js +17 -3
- package/dist/cjs/vis/table/index.d.ts +1 -0
- package/dist/cjs/vis/table/index.js +37 -1
- package/dist/cjs/vis/treemap/index.js +2 -1
- package/dist/cjs/vis/venn/index.d.ts +2 -1
- package/dist/cjs/vis/venn/index.js +18 -3
- package/dist/cjs/vis/violin/index.js +2 -1
- package/dist/cjs/vis/waterfall/index.d.ts +6 -9
- package/dist/cjs/vis/waterfall/index.js +29 -6
- package/dist/cjs/vis/word-cloud/index.js +2 -1
- package/dist/cjs/vis-wrapper/icons.js +2 -2
- package/dist/cjs/vis-wrapper/index.d.ts +1 -0
- package/dist/cjs/vis-wrapper/index.js +27 -16
- package/dist/cjs/vis-wrapper/styles.d.ts +1 -1
- package/dist/cjs/vis-wrapper/styles.js +8 -1
- package/dist/esm/gpt-vis/index.d.ts +8 -1
- package/dist/esm/gpt-vis/index.js +47 -26
- package/dist/esm/index.d.ts +15 -2
- package/dist/esm/index.js +7 -1
- package/dist/esm/syntax/parser.d.ts +17 -2
- package/dist/esm/syntax/parser.js +248 -90
- package/dist/esm/util/container.d.ts +5 -0
- package/dist/esm/util/container.js +20 -0
- package/dist/esm/util/theme.d.ts +5 -0
- package/dist/esm/util/theme.js +9 -0
- package/dist/esm/vis/area/index.js +3 -2
- package/dist/esm/vis/bar/index.js +7 -6
- package/dist/esm/vis/boxplot/index.js +17 -4
- package/dist/esm/vis/column/index.js +7 -6
- package/dist/esm/vis/dual-axes/index.js +13 -5
- package/dist/esm/vis/fishbone-diagram/index.d.ts +35 -0
- package/dist/esm/vis/fishbone-diagram/index.js +219 -0
- package/dist/esm/vis/flow-diagram/index.d.ts +27 -0
- package/dist/esm/vis/flow-diagram/index.js +349 -0
- package/dist/esm/vis/funnel/index.js +3 -2
- package/dist/esm/vis/histogram/index.js +6 -7
- package/dist/esm/vis/indented-tree/index.d.ts +40 -0
- package/dist/esm/vis/indented-tree/index.js +569 -0
- package/dist/esm/vis/line/index.js +3 -2
- package/dist/esm/vis/liquid/index.js +3 -2
- package/dist/esm/vis/mindmap/index.d.ts +32 -0
- package/dist/esm/vis/mindmap/index.js +316 -0
- package/dist/esm/vis/network-graph/index.d.ts +59 -0
- package/dist/esm/vis/network-graph/index.js +242 -0
- package/dist/esm/vis/organization-chart/index.d.ts +64 -0
- package/dist/esm/vis/organization-chart/index.js +271 -0
- package/dist/esm/vis/pie/index.js +4 -8
- package/dist/esm/vis/radar/index.d.ts +1 -0
- package/dist/esm/vis/radar/index.js +20 -4
- package/dist/esm/vis/sankey/index.js +3 -2
- package/dist/esm/vis/scatter/index.d.ts +2 -0
- package/dist/esm/vis/scatter/index.js +15 -4
- package/dist/esm/vis/summary/index.js +25 -4
- package/dist/esm/vis/table/index.d.ts +1 -0
- package/dist/esm/vis/table/index.js +9 -2
- package/dist/esm/vis/treemap/index.js +3 -2
- package/dist/esm/vis/venn/index.d.ts +2 -1
- package/dist/esm/vis/venn/index.js +29 -4
- package/dist/esm/vis/violin/index.js +3 -2
- package/dist/esm/vis/waterfall/index.d.ts +6 -9
- package/dist/esm/vis/waterfall/index.js +33 -13
- package/dist/esm/vis/word-cloud/index.js +3 -2
- package/dist/esm/vis-wrapper/icons.js +2 -2
- package/dist/esm/vis-wrapper/index.d.ts +1 -0
- package/dist/esm/vis-wrapper/index.js +15 -10
- package/dist/esm/vis-wrapper/styles.d.ts +1 -1
- package/dist/esm/vis-wrapper/styles.js +1 -1
- package/dist/umd/index.min.js +1 -1
- package/package.json +17 -21
- package/src/gpt-vis/index.ts +0 -283
- package/src/index.ts +0 -44
- package/src/readme.md +0 -37
- package/src/syntax/index.ts +0 -2
- package/src/syntax/parser.ts +0 -411
- package/src/types/index.ts +0 -29
- package/src/util/theme.ts +0 -167
- package/src/vis/area/README.md +0 -143
- package/src/vis/area/index.ts +0 -212
- package/src/vis/bar/README.md +0 -158
- package/src/vis/bar/index.ts +0 -186
- package/src/vis/boxplot/README.md +0 -168
- package/src/vis/boxplot/index.ts +0 -162
- package/src/vis/column/README.md +0 -158
- package/src/vis/column/index.ts +0 -185
- package/src/vis/dual-axes/README.md +0 -191
- package/src/vis/dual-axes/index.ts +0 -218
- package/src/vis/funnel/README.md +0 -143
- package/src/vis/funnel/index.ts +0 -238
- package/src/vis/histogram/README.md +0 -130
- package/src/vis/histogram/index.ts +0 -153
- package/src/vis/line/README.md +0 -138
- package/src/vis/line/index.ts +0 -159
- package/src/vis/liquid/README.md +0 -150
- package/src/vis/liquid/index.ts +0 -130
- package/src/vis/pie/README.md +0 -127
- package/src/vis/pie/index.ts +0 -163
- package/src/vis/radar/README.md +0 -184
- package/src/vis/radar/index.ts +0 -214
- package/src/vis/sankey/README.md +0 -144
- package/src/vis/sankey/index.ts +0 -144
- package/src/vis/scatter/README.md +0 -145
- package/src/vis/scatter/index.ts +0 -147
- package/src/vis/summary/README.md +0 -272
- package/src/vis/summary/index.ts +0 -91
- package/src/vis/table/README.md +0 -174
- package/src/vis/table/index.ts +0 -241
- package/src/vis/treemap/README.md +0 -199
- package/src/vis/treemap/index.ts +0 -167
- package/src/vis/venn/README.md +0 -153
- package/src/vis/venn/index.ts +0 -149
- package/src/vis/violin/README.md +0 -168
- package/src/vis/violin/index.ts +0 -216
- package/src/vis/waterfall/README.md +0 -178
- package/src/vis/waterfall/index.ts +0 -258
- package/src/vis/word-cloud/README.md +0 -137
- package/src/vis/word-cloud/index.ts +0 -137
- package/src/vis-wrapper/README.md +0 -159
- package/src/vis-wrapper/icons.ts +0 -35
- package/src/vis-wrapper/index.ts +0 -276
- package/src/vis-wrapper/styles.ts +0 -195
package/src/vis/treemap/index.ts
DELETED
|
@@ -1,167 +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
|
-
* TreemapDataItem is the type for each data item in the treemap chart.
|
|
7
|
-
*/
|
|
8
|
-
export type TreemapDataItem = {
|
|
9
|
-
name: string;
|
|
10
|
-
value: number;
|
|
11
|
-
children?: TreemapDataItem[];
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* TreemapConfig defines the configuration for rendering the treemap chart.
|
|
16
|
-
*/
|
|
17
|
-
export interface TreemapConfig {
|
|
18
|
-
type?: 'treemap';
|
|
19
|
-
data: TreemapDataItem[];
|
|
20
|
-
theme?: 'default' | 'academy' | 'dark';
|
|
21
|
-
title?: string;
|
|
22
|
-
style?: {
|
|
23
|
-
backgroundColor?: string;
|
|
24
|
-
palette?: string[];
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* TreemapInstance represents a treemap chart instance with render and destroy methods.
|
|
30
|
-
*/
|
|
31
|
-
export interface TreemapInstance {
|
|
32
|
-
render: (config: TreemapConfig) => void;
|
|
33
|
-
destroy: () => void;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Treemap chart component using G2 5.0.
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```ts
|
|
41
|
-
* const treemap = Treemap({
|
|
42
|
-
* container: '#container',
|
|
43
|
-
* width: 600,
|
|
44
|
-
* height: 400,
|
|
45
|
-
* });
|
|
46
|
-
*
|
|
47
|
-
* treemap.render({
|
|
48
|
-
* type: 'treemap',
|
|
49
|
-
* data: [
|
|
50
|
-
* {
|
|
51
|
-
* name: 'A',
|
|
52
|
-
* value: 100,
|
|
53
|
-
* children: [
|
|
54
|
-
* { name: 'A1', value: 40 },
|
|
55
|
-
* { name: 'A2', value: 30 },
|
|
56
|
-
* { name: 'A3', value: 30 },
|
|
57
|
-
* ],
|
|
58
|
-
* },
|
|
59
|
-
* {
|
|
60
|
-
* name: 'B',
|
|
61
|
-
* value: 80,
|
|
62
|
-
* children: [
|
|
63
|
-
* { name: 'B1', value: 50 },
|
|
64
|
-
* { name: 'B2', value: 30 },
|
|
65
|
-
* ],
|
|
66
|
-
* },
|
|
67
|
-
* ],
|
|
68
|
-
* theme: 'academy'
|
|
69
|
-
* });
|
|
70
|
-
*
|
|
71
|
-
* treemap.destroy();
|
|
72
|
-
* ```
|
|
73
|
-
*/
|
|
74
|
-
export const Treemap = (options: VisualizationOptions): TreemapInstance => {
|
|
75
|
-
const { container, width, height, theme: chartTheme = 'default' } = options;
|
|
76
|
-
let chart: Chart | null = null;
|
|
77
|
-
|
|
78
|
-
/**
|
|
79
|
-
* Render the treemap chart with the given configuration.
|
|
80
|
-
*/
|
|
81
|
-
const render = (config: TreemapConfig): void => {
|
|
82
|
-
const { data = [], theme = chartTheme, title, style = {} } = config;
|
|
83
|
-
|
|
84
|
-
// Clean up previous chart if exists
|
|
85
|
-
if (chart) {
|
|
86
|
-
chart.destroy();
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
// Get colors from style.palette or theme defaults
|
|
90
|
-
const colors = style.palette || getThemeColors(theme);
|
|
91
|
-
const backgroundColor = style.backgroundColor || getBackgroundColor(theme);
|
|
92
|
-
|
|
93
|
-
// Create chart
|
|
94
|
-
chart = new Chart({
|
|
95
|
-
container,
|
|
96
|
-
width,
|
|
97
|
-
height,
|
|
98
|
-
autoFit: true,
|
|
99
|
-
});
|
|
100
|
-
|
|
101
|
-
// Configure chart options
|
|
102
|
-
// Note: Using 'any' type due to G2's complex type system with transformations
|
|
103
|
-
// This is consistent with how G2 5.0 is used elsewhere in the codebase
|
|
104
|
-
const chartOptions: any = {
|
|
105
|
-
type: 'treemap',
|
|
106
|
-
data: {
|
|
107
|
-
type: 'inline',
|
|
108
|
-
value: {
|
|
109
|
-
name: 'root',
|
|
110
|
-
children: data,
|
|
111
|
-
},
|
|
112
|
-
},
|
|
113
|
-
title: title ?? '',
|
|
114
|
-
layout: {
|
|
115
|
-
tile: 'treemapBinary',
|
|
116
|
-
paddingInner: 2,
|
|
117
|
-
},
|
|
118
|
-
encode: {
|
|
119
|
-
value: 'value',
|
|
120
|
-
},
|
|
121
|
-
style: {
|
|
122
|
-
fillOpacity: 0.8,
|
|
123
|
-
labelFontSize: 10,
|
|
124
|
-
},
|
|
125
|
-
legend: false,
|
|
126
|
-
tooltip: {
|
|
127
|
-
items: [
|
|
128
|
-
(d: any) => ({
|
|
129
|
-
name: d.data?.name || d.name,
|
|
130
|
-
value: d.data?.value || d.value,
|
|
131
|
-
}),
|
|
132
|
-
],
|
|
133
|
-
},
|
|
134
|
-
viewStyle: {
|
|
135
|
-
viewFill: backgroundColor,
|
|
136
|
-
},
|
|
137
|
-
theme: getThemeObject(theme),
|
|
138
|
-
scale: {
|
|
139
|
-
...(colors.length > 0
|
|
140
|
-
? {
|
|
141
|
-
color: {
|
|
142
|
-
range: colors,
|
|
143
|
-
},
|
|
144
|
-
}
|
|
145
|
-
: {}),
|
|
146
|
-
},
|
|
147
|
-
};
|
|
148
|
-
|
|
149
|
-
chart.options(chartOptions);
|
|
150
|
-
chart.render();
|
|
151
|
-
};
|
|
152
|
-
|
|
153
|
-
/**
|
|
154
|
-
* Destroy the chart instance and clean up resources.
|
|
155
|
-
*/
|
|
156
|
-
const destroy = (): void => {
|
|
157
|
-
if (chart) {
|
|
158
|
-
chart.destroy();
|
|
159
|
-
chart = null;
|
|
160
|
-
}
|
|
161
|
-
};
|
|
162
|
-
|
|
163
|
-
return {
|
|
164
|
-
render,
|
|
165
|
-
destroy,
|
|
166
|
-
};
|
|
167
|
-
};
|
package/src/vis/venn/README.md
DELETED
|
@@ -1,153 +0,0 @@
|
|
|
1
|
-
# Venn
|
|
2
|
-
|
|
3
|
-
A venn chart component for visualizing set relationships, intersections, and unions, built with G2 5.0.
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
```ts
|
|
8
|
-
import { Venn } from '@antv/gpt-vis/ai';
|
|
9
|
-
|
|
10
|
-
const venn = Venn({
|
|
11
|
-
container: '#container',
|
|
12
|
-
width: 600,
|
|
13
|
-
height: 400,
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
venn.render({
|
|
17
|
-
data: [
|
|
18
|
-
{ sets: ['A'], value: 20, label: '集合A' },
|
|
19
|
-
{ sets: ['B'], value: 15, label: '集合B' },
|
|
20
|
-
{ sets: ['A', 'B'], value: 5, label: '交集AB' },
|
|
21
|
-
],
|
|
22
|
-
});
|
|
23
|
-
|
|
24
|
-
venn.destroy();
|
|
25
|
-
```
|
|
26
|
-
|
|
27
|
-
## Configuration
|
|
28
|
-
|
|
29
|
-
### Constructor Options (VennOptions)
|
|
30
|
-
|
|
31
|
-
| Property | Type | Default | Description |
|
|
32
|
-
| --------- | --------------------- | ------- | ----------------------------- |
|
|
33
|
-
| container | string \| HTMLElement | - | Container element or selector |
|
|
34
|
-
| width | number | 640 | Chart width in pixels |
|
|
35
|
-
| height | number | 480 | Chart height in pixels |
|
|
36
|
-
|
|
37
|
-
### Render Config (VennConfig)
|
|
38
|
-
|
|
39
|
-
| Property | Type | Default | Description |
|
|
40
|
-
| -------- | ------ | --------- | --------------------------------------------- |
|
|
41
|
-
| data | Array | - | Chart data array |
|
|
42
|
-
| theme | string | 'default' | Color theme: 'default' \| 'academy' \| 'dark' |
|
|
43
|
-
| title | string | - | Chart title |
|
|
44
|
-
| style | object | - | Chart style configuration |
|
|
45
|
-
|
|
46
|
-
### Data Structure
|
|
47
|
-
|
|
48
|
-
```ts
|
|
49
|
-
type VennDataItem = {
|
|
50
|
-
sets: string[]; // Set identifiers (single set or intersection)
|
|
51
|
-
value: number; // Set or intersection size
|
|
52
|
-
label?: string; // Optional label for the set or intersection
|
|
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 Example (Two Sets)
|
|
68
|
-
|
|
69
|
-
```ts
|
|
70
|
-
venn.render({
|
|
71
|
-
data: [
|
|
72
|
-
{ sets: ['A'], value: 20, label: '集合A' },
|
|
73
|
-
{ sets: ['B'], value: 15, label: '集合B' },
|
|
74
|
-
{ sets: ['A', 'B'], value: 5, label: '交集AB' },
|
|
75
|
-
],
|
|
76
|
-
title: '集合交集示例',
|
|
77
|
-
});
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
### Three Sets with Intersections
|
|
81
|
-
|
|
82
|
-
```ts
|
|
83
|
-
venn.render({
|
|
84
|
-
data: [
|
|
85
|
-
{ sets: ['A'], value: 10, label: '集合A' },
|
|
86
|
-
{ sets: ['B'], value: 8, label: '集合B' },
|
|
87
|
-
{ sets: ['C'], value: 6, label: '集合C' },
|
|
88
|
-
{ sets: ['A', 'B'], value: 4 },
|
|
89
|
-
{ sets: ['A', 'C'], value: 2 },
|
|
90
|
-
{ sets: ['B', 'C'], value: 1 },
|
|
91
|
-
{ sets: ['A', 'B', 'C'], value: 1 },
|
|
92
|
-
],
|
|
93
|
-
title: '三集合关系',
|
|
94
|
-
});
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### With Academy Theme
|
|
98
|
-
|
|
99
|
-
```ts
|
|
100
|
-
venn.render({
|
|
101
|
-
data: [
|
|
102
|
-
{ sets: ['A'], value: 10, label: '集合A' },
|
|
103
|
-
{ sets: ['B'], value: 8, label: '集合B' },
|
|
104
|
-
{ sets: ['C'], value: 6, label: '集合C' },
|
|
105
|
-
{ sets: ['A', 'B'], value: 4 },
|
|
106
|
-
{ sets: ['A', 'C'], value: 2 },
|
|
107
|
-
{ sets: ['B', 'C'], value: 1 },
|
|
108
|
-
{ sets: ['A', 'B', 'C'], value: 1 },
|
|
109
|
-
],
|
|
110
|
-
title: '三集合关系',
|
|
111
|
-
theme: 'academy',
|
|
112
|
-
});
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
### With Dark Theme
|
|
116
|
-
|
|
117
|
-
```ts
|
|
118
|
-
venn.render({
|
|
119
|
-
data: [
|
|
120
|
-
{ sets: ['A'], value: 10, label: '集合A' },
|
|
121
|
-
{ sets: ['B'], value: 8, label: '集合B' },
|
|
122
|
-
{ sets: ['C'], value: 6, label: '集合C' },
|
|
123
|
-
{ sets: ['A', 'B'], value: 4 },
|
|
124
|
-
{ sets: ['A', 'C'], value: 2 },
|
|
125
|
-
{ sets: ['B', 'C'], value: 1 },
|
|
126
|
-
{ sets: ['A', 'B', 'C'], value: 1 },
|
|
127
|
-
],
|
|
128
|
-
title: '三集合关系',
|
|
129
|
-
theme: 'dark',
|
|
130
|
-
});
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
### With Custom Styles
|
|
134
|
-
|
|
135
|
-
```ts
|
|
136
|
-
venn.render({
|
|
137
|
-
data: [
|
|
138
|
-
{ sets: ['A'], value: 30, label: '购买手机' },
|
|
139
|
-
{ sets: ['B'], value: 25, label: '购买耳机' },
|
|
140
|
-
{ sets: ['A', 'B'], value: 10 },
|
|
141
|
-
],
|
|
142
|
-
title: '标签交集',
|
|
143
|
-
style: {
|
|
144
|
-
palette: ['#FFB6C1', '#87CEFA'],
|
|
145
|
-
backgroundColor: '#F8F8FF',
|
|
146
|
-
},
|
|
147
|
-
});
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
## Methods
|
|
151
|
-
|
|
152
|
-
- `render(config: VennConfig): void` - Render or update the chart
|
|
153
|
-
- `destroy(): void` - Destroy the chart instance and clean up resources
|
package/src/vis/venn/index.ts
DELETED
|
@@ -1,149 +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
|
-
* VennDataItem is the type for each data item in the venn chart.
|
|
7
|
-
*/
|
|
8
|
-
export type VennDataItem = {
|
|
9
|
-
sets: string[];
|
|
10
|
-
value: number;
|
|
11
|
-
label?: string;
|
|
12
|
-
};
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* VennConfig defines the configuration for rendering the venn chart.
|
|
16
|
-
*/
|
|
17
|
-
export interface VennConfig {
|
|
18
|
-
type?: 'venn';
|
|
19
|
-
data: VennDataItem[];
|
|
20
|
-
theme?: 'default' | 'academy' | 'dark';
|
|
21
|
-
title?: string;
|
|
22
|
-
style?: {
|
|
23
|
-
backgroundColor?: string;
|
|
24
|
-
palette?: string[];
|
|
25
|
-
};
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
/**
|
|
29
|
-
* VennInstance represents a venn chart instance with render and destroy methods.
|
|
30
|
-
*/
|
|
31
|
-
export interface VennInstance {
|
|
32
|
-
render: (config: VennConfig) => void;
|
|
33
|
-
destroy: () => void;
|
|
34
|
-
}
|
|
35
|
-
|
|
36
|
-
/**
|
|
37
|
-
* Venn chart component using G2 5.0.
|
|
38
|
-
*
|
|
39
|
-
* @example
|
|
40
|
-
* ```ts
|
|
41
|
-
* const venn = Venn({
|
|
42
|
-
* container: '#container',
|
|
43
|
-
* width: 600,
|
|
44
|
-
* height: 400,
|
|
45
|
-
* });
|
|
46
|
-
*
|
|
47
|
-
* venn.render({
|
|
48
|
-
* type: 'venn',
|
|
49
|
-
* data: [
|
|
50
|
-
* { sets: ['A'], value: 20, label: '集合A' },
|
|
51
|
-
* { sets: ['B'], value: 15, label: '集合B' },
|
|
52
|
-
* { sets: ['A', 'B'], value: 5, label: '交集AB' },
|
|
53
|
-
* ],
|
|
54
|
-
* theme: 'academy'
|
|
55
|
-
* });
|
|
56
|
-
*
|
|
57
|
-
* venn.destroy();
|
|
58
|
-
* ```
|
|
59
|
-
*/
|
|
60
|
-
export const Venn = (options: VisualizationOptions): VennInstance => {
|
|
61
|
-
const { container, width, height, theme: chartTheme = 'default' } = options;
|
|
62
|
-
let chart: Chart | null = null;
|
|
63
|
-
|
|
64
|
-
/**
|
|
65
|
-
* Render the venn chart with the given configuration.
|
|
66
|
-
*/
|
|
67
|
-
const render = (config: VennConfig): 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
|
-
// 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: 'path',
|
|
92
|
-
data: {
|
|
93
|
-
value: data,
|
|
94
|
-
transform: [
|
|
95
|
-
{
|
|
96
|
-
type: 'venn',
|
|
97
|
-
padding: 8,
|
|
98
|
-
sets: 'sets',
|
|
99
|
-
size: 'value',
|
|
100
|
-
as: ['key', 'path'],
|
|
101
|
-
},
|
|
102
|
-
],
|
|
103
|
-
},
|
|
104
|
-
title: title ?? '',
|
|
105
|
-
encode: { d: 'path', color: 'key' },
|
|
106
|
-
scale: {
|
|
107
|
-
color: { range: colors },
|
|
108
|
-
},
|
|
109
|
-
style: {
|
|
110
|
-
// Set opacity: intersections (sets.length > 1) are nearly transparent, single sets are more opaque
|
|
111
|
-
opacity: (d: VennDataItem) => (d.sets.length > 1 ? 0.001 : 0.65),
|
|
112
|
-
},
|
|
113
|
-
labels: [
|
|
114
|
-
{
|
|
115
|
-
position: 'inside',
|
|
116
|
-
text: (d: VennDataItem) => d.label || '',
|
|
117
|
-
fill: '#000',
|
|
118
|
-
fillOpacity: 0.85,
|
|
119
|
-
fontSize: 10,
|
|
120
|
-
},
|
|
121
|
-
],
|
|
122
|
-
viewStyle: {
|
|
123
|
-
viewFill: backgroundColor,
|
|
124
|
-
},
|
|
125
|
-
theme: getThemeObject(theme),
|
|
126
|
-
legend: false,
|
|
127
|
-
axis: false,
|
|
128
|
-
tooltip: false,
|
|
129
|
-
};
|
|
130
|
-
|
|
131
|
-
chart.options(chartOptions);
|
|
132
|
-
chart.render();
|
|
133
|
-
};
|
|
134
|
-
|
|
135
|
-
/**
|
|
136
|
-
* Destroy the chart instance and clean up resources.
|
|
137
|
-
*/
|
|
138
|
-
const destroy = (): void => {
|
|
139
|
-
if (chart) {
|
|
140
|
-
chart.destroy();
|
|
141
|
-
chart = null;
|
|
142
|
-
}
|
|
143
|
-
};
|
|
144
|
-
|
|
145
|
-
return {
|
|
146
|
-
render,
|
|
147
|
-
destroy,
|
|
148
|
-
};
|
|
149
|
-
};
|
package/src/vis/violin/README.md
DELETED
|
@@ -1,168 +0,0 @@
|
|
|
1
|
-
# Violin
|
|
2
|
-
|
|
3
|
-
A violin plot component for displaying statistical distribution and probability density, built with G2 5.0.
|
|
4
|
-
|
|
5
|
-
## Usage
|
|
6
|
-
|
|
7
|
-
```ts
|
|
8
|
-
import { Violin } from '@antv/gpt-vis/ai';
|
|
9
|
-
|
|
10
|
-
const violin = Violin({
|
|
11
|
-
container: '#container',
|
|
12
|
-
width: 600,
|
|
13
|
-
height: 400,
|
|
14
|
-
});
|
|
15
|
-
|
|
16
|
-
violin.render({
|
|
17
|
-
data: [
|
|
18
|
-
{ category: '班级A', value: 15 },
|
|
19
|
-
{ category: '班级A', value: 18 },
|
|
20
|
-
{ category: '班级A', value: 22 },
|
|
21
|
-
{ category: '班级A', value: 27 },
|
|
22
|
-
{ category: '班级A', value: 35 },
|
|
23
|
-
{ category: '班级B', value: 10 },
|
|
24
|
-
{ category: '班级B', value: 14 },
|
|
25
|
-
{ category: '班级B', value: 19 },
|
|
26
|
-
{ category: '班级B', value: 23 },
|
|
27
|
-
{ category: '班级B', value: 30 },
|
|
28
|
-
],
|
|
29
|
-
});
|
|
30
|
-
|
|
31
|
-
violin.destroy();
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Configuration
|
|
35
|
-
|
|
36
|
-
### Constructor Options (ViolinOptions)
|
|
37
|
-
|
|
38
|
-
| Property | Type | Default | Description |
|
|
39
|
-
| --------- | --------------------- | ------- | ----------------------------- |
|
|
40
|
-
| container | string \| HTMLElement | - | Container element or selector |
|
|
41
|
-
| width | number | 640 | Chart width in pixels |
|
|
42
|
-
| height | number | 480 | Chart height in pixels |
|
|
43
|
-
|
|
44
|
-
### Render Config (ViolinConfig)
|
|
45
|
-
|
|
46
|
-
| Property | Type | Default | Description |
|
|
47
|
-
| ---------- | ------ | --------- | ------------------------- |
|
|
48
|
-
| data | Array | - | Chart data array |
|
|
49
|
-
| theme | string | 'default' | Color theme |
|
|
50
|
-
| title | string | - | Chart title |
|
|
51
|
-
| axisXTitle | string | - | X-axis title |
|
|
52
|
-
| axisYTitle | string | - | Y-axis title |
|
|
53
|
-
| style | object | - | Chart style configuration |
|
|
54
|
-
|
|
55
|
-
### Data Structure
|
|
56
|
-
|
|
57
|
-
```ts
|
|
58
|
-
type ViolinDataItem = {
|
|
59
|
-
category: string; // Category name (required)
|
|
60
|
-
value: number; // Data value (required)
|
|
61
|
-
group?: string; // Group name for grouped violin plots (optional)
|
|
62
|
-
};
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### Style Options
|
|
66
|
-
|
|
67
|
-
```ts
|
|
68
|
-
style?: {
|
|
69
|
-
backgroundColor?: string; // Background color
|
|
70
|
-
palette?: string[]; // Color palette
|
|
71
|
-
startAtZero?: boolean; // Whether Y-axis starts at zero
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Examples
|
|
76
|
-
|
|
77
|
-
### Basic Example
|
|
78
|
-
|
|
79
|
-
```ts
|
|
80
|
-
violin.render({
|
|
81
|
-
data: [
|
|
82
|
-
{ category: '班级A', value: 15 },
|
|
83
|
-
{ category: '班级A', value: 18 },
|
|
84
|
-
{ category: '班级A', value: 22 },
|
|
85
|
-
{ category: '班级A', value: 27 },
|
|
86
|
-
{ category: '班级A', value: 35 },
|
|
87
|
-
{ category: '班级B', value: 10 },
|
|
88
|
-
{ category: '班级B', value: 14 },
|
|
89
|
-
{ category: '班级B', value: 19 },
|
|
90
|
-
{ category: '班级B', value: 23 },
|
|
91
|
-
{ category: '班级B', value: 30 },
|
|
92
|
-
],
|
|
93
|
-
title: '成绩分布',
|
|
94
|
-
});
|
|
95
|
-
```
|
|
96
|
-
|
|
97
|
-
### With Theme
|
|
98
|
-
|
|
99
|
-
```ts
|
|
100
|
-
violin.render({
|
|
101
|
-
data: [
|
|
102
|
-
{ category: '实验组1', value: 12 },
|
|
103
|
-
{ category: '实验组1', value: 15 },
|
|
104
|
-
{ category: '实验组1', value: 20 },
|
|
105
|
-
{ category: '实验组1', value: 25 },
|
|
106
|
-
{ category: '实验组1', value: 30 },
|
|
107
|
-
],
|
|
108
|
-
theme: 'academy',
|
|
109
|
-
title: '实验数据分布',
|
|
110
|
-
});
|
|
111
|
-
```
|
|
112
|
-
|
|
113
|
-
### With Custom Styles
|
|
114
|
-
|
|
115
|
-
```ts
|
|
116
|
-
violin.render({
|
|
117
|
-
data: [
|
|
118
|
-
{ category: '股票A', value: 50 },
|
|
119
|
-
{ category: '股票A', value: 55 },
|
|
120
|
-
{ category: '股票A', value: 60 },
|
|
121
|
-
{ category: '股票A', value: 65 },
|
|
122
|
-
{ category: '股票A', value: 70 },
|
|
123
|
-
],
|
|
124
|
-
title: '金融数据分布',
|
|
125
|
-
style: {
|
|
126
|
-
palette: ['#FF9800', '#2196F3', '#F5F5F5'],
|
|
127
|
-
backgroundColor: '#333333',
|
|
128
|
-
},
|
|
129
|
-
});
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
### Grouped Violin Plot
|
|
133
|
-
|
|
134
|
-
```ts
|
|
135
|
-
violin.render({
|
|
136
|
-
data: [
|
|
137
|
-
{ group: 'I. setosa', category: 'PetalWidth', value: 0.2 },
|
|
138
|
-
{ group: 'I. setosa', category: 'PetalLength', value: 1.4 },
|
|
139
|
-
{ group: 'I. setosa', category: 'SepalWidth', value: 3.5 },
|
|
140
|
-
{ group: 'I. setosa', category: 'SepalLength', value: 5.1 },
|
|
141
|
-
{ group: 'I. versicolor', category: 'PetalWidth', value: 1.4 },
|
|
142
|
-
{ group: 'I. versicolor', category: 'PetalLength', value: 4.7 },
|
|
143
|
-
{ group: 'I. versicolor', category: 'SepalWidth', value: 3.2 },
|
|
144
|
-
{ group: 'I. versicolor', category: 'SepalLength', value: 7.0 },
|
|
145
|
-
],
|
|
146
|
-
title: '不同品种的鸢尾花特征分布',
|
|
147
|
-
});
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### Start at Zero
|
|
151
|
-
|
|
152
|
-
```ts
|
|
153
|
-
violin.render({
|
|
154
|
-
data: [
|
|
155
|
-
{ category: '班级A', value: 15 },
|
|
156
|
-
{ category: '班级A', value: 18 },
|
|
157
|
-
{ category: '班级A', value: 22 },
|
|
158
|
-
],
|
|
159
|
-
style: {
|
|
160
|
-
startAtZero: true,
|
|
161
|
-
},
|
|
162
|
-
});
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
## Methods
|
|
166
|
-
|
|
167
|
-
- `render(config: ViolinConfig): void` - Render or update the chart
|
|
168
|
-
- `destroy(): void` - Destroy the chart instance and clean up resources
|