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