visualifyjs 2.5.3 → 3.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 (252) hide show
  1. package/.claude/mem/TIMELINE.md +36 -0
  2. package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-external-script-solution.md +24 -0
  3. package/.claude/mem/notes/2026-02-11-3d-visualization-docs-fix-session-summary.md +43 -0
  4. package/.claude/mem/notes/2026-02-11-cli-fix-editor-command-alias.md +26 -0
  5. package/.claude/mem/notes/2026-02-11-phase-3-developer-experience-completed.md +51 -0
  6. package/.claude/mem/notes/2026-02-11-phase-4-web-workers-implementation-complete.md +59 -0
  7. package/.claude/mem/notes/2026-02-11-visualify-phase-2-3d-visualization-complete.md +50 -0
  8. package/.claude/mem/notes/2026-02-11-visualify-phase-2-committed-ready-for-phase-3.md +33 -0
  9. package/.claude/mem/notes/2026-02-11-visualify-phase-3-complete-developer-experience.md +52 -0
  10. package/.claude/mem/notes/2026-02-11-visualify-repository-cleanup-complete.md +28 -0
  11. package/.claude/mem/notes/2026-02-18-codebase-cleanup-docsify-plugin-documentation.md +37 -0
  12. package/.claude/mem/notes/2026-02-19-css-grid-layout-fix-displaycontents-on-vcontroller.md +18 -0
  13. package/.claude/mem/notes/2026-02-19-docsify-plugin-fixes-latex-and-visualify-code-bloc.md +26 -0
  14. package/.claude/mem/notes/2026-02-19-page-mode-docs-update-decisions.md +23 -0
  15. package/.claude/mem/notes/2026-02-19-react-context-infinite-re-render-loop-fix-pattern.md +31 -0
  16. package/.claude/mem/notes/2026-02-19-version-300-bump-and-build-fixes.md +32 -0
  17. package/.claude/mem/notes/2026-02-19-visualify-build-deployment-architecture-bug-fixes.md +25 -0
  18. package/.claude/mem/notes/2026-02-19-visualify-dist-iife-self-contained-build-config.md +30 -0
  19. package/.claude/mem/notes/2026-02-19-visualify-infinite-loop-i18n-fixes.md +31 -0
  20. package/.claude/mem/notes/2026-02-19-visualify-v3-bundle-splitting-docs-restructuring.md +32 -0
  21. package/.claude/mem/notes/2026-02-20-bundle-externalization-final-architecture.md +29 -0
  22. package/.claude/mem/notes/2026-02-20-chromium-page-fix-unstable-keys-and-double-event-b.md +27 -0
  23. package/.claude/mem/notes/2026-02-20-console-cleanup-bundle-optimization-commit.md +20 -0
  24. package/.claude/mem/notes/2026-02-20-dotbio-dot-plot-fix-useeffect-dependency.md +21 -0
  25. package/.claude/mem/notes/2026-02-20-public-folder-cleanup-and-readme-rewrite.md +25 -0
  26. package/.claude/mem/notes/2026-02-20-v300-release-and-beta-channel-strategy.md +29 -0
  27. package/.claude/mem/notes/2026-02-20-visium-background-image-unknown-legend-fix.md +19 -0
  28. package/.claude/mem/notes/2026-02-20-visualify-cdn-loader-bundle-externalization.md +34 -0
  29. package/.claude/mem/sessions/session-2026-02-20-031524.md +54 -0
  30. package/.claude/settings.local.json +21 -0
  31. package/.github/workflows/static.yml.bak +51 -51
  32. package/.sisyphus/boulder.json +65 -0
  33. package/.sisyphus/plans/phase-4-advanced-optimizations.md +217 -0
  34. package/LICENSE +674 -674
  35. package/README.md +94 -59
  36. package/config-overrides.js +31 -31
  37. package/dist/stats.html +4949 -0
  38. package/dist/visualify-3d.esm.js +1 -0
  39. package/dist/visualify-3d.js +1 -0
  40. package/dist/visualify-core.esm.js +1 -0
  41. package/dist/visualify-core.js +1 -0
  42. package/dist/visualify-docs.esm.js +1 -0
  43. package/dist/visualify-docs.js +1 -0
  44. package/dist/visualify-loader.js +1 -0
  45. package/dist/visualify-pages.esm.js +1 -0
  46. package/dist/visualify-pages.js +1 -0
  47. package/dist/visualify-portal.esm.js +1 -0
  48. package/dist/visualify-portal.js +1 -0
  49. package/dist/visualify-shared.js +26571 -0
  50. package/dist/visualify.js +1 -188
  51. package/docs/CHANGELOG.md +148 -0
  52. package/docs/cli/commands.md +513 -0
  53. package/docs/configuration/visualify-json.md +474 -0
  54. package/docs/docs/3d-visualization.md +374 -0
  55. package/docs/docs/CLI.md +303 -34
  56. package/docs/docs/README.md +65 -65
  57. package/docs/docs/Rechart/bar.md +190 -190
  58. package/docs/docs/Rechart/funnel.md +241 -193
  59. package/docs/docs/Rechart/line.md +355 -355
  60. package/docs/docs/Rechart/pie.md +225 -225
  61. package/docs/docs/Rechart/radar.md +253 -253
  62. package/docs/docs/Rechart/scatter.md +298 -0
  63. package/docs/docs/_404.md +51 -51
  64. package/docs/docs/_coverpage.md +11 -11
  65. package/docs/docs/_sidebar.md +54 -43
  66. package/docs/docs/components/dotBio.md +87 -34
  67. package/docs/docs/components/echart.md +171 -82
  68. package/docs/docs/components/html.md +61 -34
  69. package/docs/docs/components/macaron.md +156 -145
  70. package/docs/docs/components/markdown.md +42 -0
  71. package/docs/docs/components/more.md +183 -142
  72. package/docs/docs/components/plotly.md +132 -62
  73. package/docs/docs/components/scatterL.md +171 -70
  74. package/docs/docs/components/visium.md +112 -57
  75. package/docs/docs/configuration.md +121 -123
  76. package/docs/docs/deploy.md +31 -31
  77. package/docs/docs/docsify-plugin.md +655 -0
  78. package/docs/docs/hmr.md +165 -0
  79. package/docs/docs/i18n.md +332 -0
  80. package/docs/docs/log.md +30 -1
  81. package/docs/docs/more-pages.md +23 -23
  82. package/docs/docs/quickstart.md +148 -119
  83. package/docs/docs/rechart-attributes.md +74 -74
  84. package/docs/docs/rechart-basic-usage.md +160 -162
  85. package/docs/docs/theme.md +5 -5
  86. package/docs/docs/typescript.md +306 -0
  87. package/docs/docs/visual-editor.md +359 -0
  88. package/docs/index.html +85 -71
  89. package/docs/manifest.json +23 -23
  90. package/docs/migration/v3-migration.md +392 -0
  91. package/docs/static/css/fluff-stuff.css +169 -169
  92. package/docs/static/css/font-awesome.min.css +4 -4
  93. package/docs/static/css/visualify.css +6 -25
  94. package/docs/static/js/3d-viz-examples.js +181 -0
  95. package/docs/static/js/configuration.js +630 -448
  96. package/docs/static/js/visualify.js +1 -188
  97. package/package.json +106 -84
  98. package/rollup.config.mjs +766 -76
  99. package/src/_css/404.css +115 -115
  100. package/src/_css/App.css +37 -37
  101. package/src/_css/autoSuggestion.css +26 -26
  102. package/src/_css/circular-progress.css +32 -32
  103. package/src/_css/index.css +36 -36
  104. package/src/_css/modern.css +350 -25
  105. package/src/_media/corner.svg +8 -8
  106. package/src/_media/download.svg +3 -3
  107. package/src/_media/logo.svg +14 -14
  108. package/src/_test/App.test.js +15 -15
  109. package/src/_utils/reportWebVitals.js +13 -13
  110. package/src/a11y/README.md +177 -0
  111. package/src/a11y/aria-labels.js +339 -0
  112. package/src/a11y/color-contrast.js +535 -0
  113. package/src/a11y/index.js +197 -0
  114. package/src/a11y/keyboard-nav.js +523 -0
  115. package/src/a11y/styles.css +165 -0
  116. package/src/cli/commands/dev.js +214 -0
  117. package/src/cli/commands/docs.js +521 -0
  118. package/src/cli/commands/edit.js +379 -0
  119. package/src/cli/commands/init.js +213 -0
  120. package/src/cli/commands/portal.js +236 -0
  121. package/src/cli/dev-server.js +530 -0
  122. package/src/cli/hmr.js +456 -0
  123. package/src/cli/index.js +180 -0
  124. package/src/cli/utils/config.js +207 -0
  125. package/src/cli/utils/logger.js +241 -0
  126. package/src/config/defaults.ts +122 -0
  127. package/src/config/index.ts +72 -0
  128. package/src/config/loader.ts +478 -0
  129. package/src/config/schema.ts +227 -0
  130. package/src/config/validator.ts +337 -0
  131. package/src/core/appContext.js +34 -27
  132. package/src/core/components/Bar.js +383 -0
  133. package/src/core/components/Bar3D.js +473 -0
  134. package/src/core/components/LargeDatasetChart.js +296 -0
  135. package/src/core/components/Line3D.js +310 -0
  136. package/src/core/components/Scatter.js +392 -188
  137. package/src/core/components/Scatter3D.js +455 -0
  138. package/src/core/components/ScatterBio.js +601 -572
  139. package/src/core/components/Surface3D.js +326 -0
  140. package/src/core/components/ThreeCustom.js +648 -0
  141. package/src/core/components/ThreeScene.js +459 -0
  142. package/src/core/components/VisiumPlot.js +191 -165
  143. package/src/core/components/browser.js +42 -42
  144. package/src/core/components/dotplot.js +413 -413
  145. package/src/core/components/html.js +29 -29
  146. package/src/core/components/list.js +178 -178
  147. package/src/core/components/macaron.js +206 -201
  148. package/src/core/components/markdown.js +56 -56
  149. package/src/core/components/parser.scatterBio.js +582 -579
  150. package/src/core/components/ratio.js +82 -80
  151. package/src/core/components/scatterL.js +206 -173
  152. package/src/core/components/searchbar.js +156 -131
  153. package/src/core/components/selection.js +310 -193
  154. package/src/core/components/timeline.js +236 -281
  155. package/src/core/components/visium.js +114 -97
  156. package/src/core/data-processor.js +413 -0
  157. package/src/core/fetch/condfetch.js +82 -82
  158. package/src/core/fetch/fetch.js +92 -92
  159. package/src/core/fetch/json.js +29 -29
  160. package/src/core/fetch/vfetch.js +42 -42
  161. package/src/core/hmr-client.js +724 -0
  162. package/src/core/liveEditor.js +44 -44
  163. package/src/core/modules/codeEditorWithPreview.js +104 -104
  164. package/src/core/modules/echarts/common.js +20 -20
  165. package/src/core/modules/echarts/gl.js +228 -0
  166. package/src/core/modules/echarts/presetHandler.js +41 -41
  167. package/src/core/modules/echarts/presets/esodev.chromium.js +172 -172
  168. package/src/core/modules/echarts/presets/esodev.codex.js +130 -130
  169. package/src/core/modules/echarts/presets/esodev.visium.js +123 -123
  170. package/src/core/modules/echarts/presets/mmtrbc.js +186 -186
  171. package/src/core/modules/echarts.js +70 -71
  172. package/src/core/modules/echartsUtils.js +43 -43
  173. package/src/core/modules/echartswitcher.js +227 -152
  174. package/src/core/modules/replotly/presetHandler.js +24 -24
  175. package/src/core/modules/replotly/presets/minimum.js +18 -18
  176. package/src/core/modules/replotly/presets/mmtrbc.dot.js +114 -114
  177. package/src/core/modules/replotly/presets/mmtrbc.violin.js +100 -100
  178. package/src/core/modules/replotly.js +74 -71
  179. package/src/core/modules/threejs/Camera.js +373 -0
  180. package/src/core/modules/threejs/Lighting.js +459 -0
  181. package/src/core/modules/threejs/Renderer.js +364 -0
  182. package/src/core/modules/threejs/Scene.js +266 -0
  183. package/src/core/modules/threejs/index.js +155 -0
  184. package/src/core/pages/404.js +50 -50
  185. package/src/core/pages/error.js +27 -27
  186. package/src/core/pages/jsonPage.js +62 -62
  187. package/src/core/pages/loading.js +44 -44
  188. package/src/core/parser/echart.data.js +204 -183
  189. package/src/core/parser/echart.features.js +125 -125
  190. package/src/core/parser/echart.general.js +147 -143
  191. package/src/core/parser/echart.hilbert.js +57 -57
  192. package/src/core/parser/echart.parser.js +210 -210
  193. package/src/core/parser/echart.series.js +67 -67
  194. package/src/core/parser/echart.types.js +76 -76
  195. package/src/core/parser/plotly.config.js +10 -10
  196. package/src/core/parser/plotly.data.js +132 -132
  197. package/src/core/parser/plotly.layout.js +9 -9
  198. package/src/core/parser/plotly.violin.js +18 -18
  199. package/src/core/recharts.js +361 -62
  200. package/src/core/router/alias.js +49 -49
  201. package/src/core/router/jsonRouter.js +31 -31
  202. package/src/core/themes/modern.js +32 -32
  203. package/src/core/themes/themeSelector.js +33 -33
  204. package/src/core/visualify.js +213 -47
  205. package/src/core/widgets/circularProgress.js +23 -23
  206. package/src/core/widgets/controller.js +116 -83
  207. package/src/core/widgets/errorBoundary.js +36 -36
  208. package/src/core/widgets/footer.js +185 -177
  209. package/src/core/widgets/header.js +238 -234
  210. package/src/core/widgets/layout/Grid.js +31 -31
  211. package/src/core/widgets/layout.js +36 -36
  212. package/src/core/widgets/mapping.js +56 -42
  213. package/src/core/workers/data-worker.js +349 -0
  214. package/src/core/workers/worker-pool.js +396 -0
  215. package/src/docsify/bundle.js +215 -0
  216. package/src/docsify/markdown.js +271 -0
  217. package/src/docsify/plugin.js +268 -0
  218. package/src/editor/README.md +172 -0
  219. package/src/editor/components/ChartBuilder.jsx +341 -0
  220. package/src/editor/components/ChartTypeSidebar.jsx +91 -0
  221. package/src/editor/components/Editor.jsx +367 -0
  222. package/src/editor/components/Preview.jsx +446 -0
  223. package/src/editor/components/PropertyPanel.jsx +468 -0
  224. package/src/editor/components/StatusBar.jsx +85 -0
  225. package/src/editor/context/EditorContext.js +248 -0
  226. package/src/editor/hooks/useDebounce.js +32 -0
  227. package/src/editor/index.js +315 -0
  228. package/src/editor/styles/editor.css +637 -0
  229. package/src/editor/utils/chartValidator.js +263 -0
  230. package/src/entries/charts3d.js +70 -0
  231. package/src/entries/core.js +78 -0
  232. package/src/entries/docs.js +154 -0
  233. package/src/entries/pages.js +93 -0
  234. package/src/entries/portal.js +204 -0
  235. package/src/entries/shared.js +50 -0
  236. package/src/i18n/formatters.js +455 -0
  237. package/src/i18n/index.js +169 -0
  238. package/src/i18n/locales/ar.json +137 -0
  239. package/src/i18n/locales/de.json +137 -0
  240. package/src/i18n/locales/en.json +137 -0
  241. package/src/i18n/locales/es.json +137 -0
  242. package/src/i18n/locales/he.json +137 -0
  243. package/src/i18n/locales/zh.json +137 -0
  244. package/src/i18n/rtl.css +183 -0
  245. package/src/index.js +82 -62
  246. package/src/loader.js +103 -0
  247. package/src/setupTests.js +5 -5
  248. package/tsconfig.json +51 -0
  249. package/types/charts.d.ts +569 -0
  250. package/types/components.d.ts +441 -0
  251. package/types/config.d.ts +199 -0
  252. package/types/index.d.ts +353 -0
@@ -1,253 +1,253 @@
1
- <script defers>
2
-
3
- const Basic_Radar = {
4
- code: `const getOption = () => {
5
- return {
6
- type: 'radar',
7
- data: {
8
- 'Referer of a Websit': [
9
- {
10
- name: '2018',
11
- value: [5000, 7000, 12000, 11000, 15000, 14000]
12
- }
13
- ],
14
- },
15
- radar:{
16
- indicator: [
17
- { name: 'APP', max: 6000 },
18
- { name: 'PC', max: 16000 },
19
- { name: 'Mobile', max: 30000 },
20
- { name: 'Wechat', max: 35000 },
21
- { name: 'Mobile QQ', max: 50000 },
22
- { name: 'Mini App', max: 25000 }
23
- ]
24
- },
25
- }
26
- };
27
- return getOption;`
28
- };
29
-
30
- const Circular_radar = {
31
- code: `const getOption = () => {
32
- return {
33
- type: 'radar',
34
- data: {
35
- 'Referer of a Websit': [
36
- {
37
- name: '2018',
38
- value: [5000, 7000, 12000, 11000, 15000, 14000]
39
- }
40
- ],
41
- },
42
- radar:{
43
- indicator: [
44
- { name: 'APP', max: 6000 },
45
- { name: 'PC', max: 16000 },
46
- { name: 'Mobile', max: 30000 },
47
- { name: 'Wechat', max: 35000 },
48
- { name: 'Mobile QQ', max: 50000 },
49
- { name: 'Mini App', max: 25000 }
50
- ],
51
- radius: 120,
52
- splitNumber: 3,
53
- shape: 'circle',
54
- splitArea: {
55
- areaStyle: {
56
- color: ['rgba(114, 172, 209, 0.2)','rgba(114, 172, 209, 0.4)', 'rgba(114, 172, 209, 0.6)','rgba(114, 172, 209, 0.8)', 'rgba(114, 172, 209, 1)'],
57
- shadowColor: 'rgba(0, 0, 0, 0.3)',
58
- shadowBlur: 10
59
- }
60
- }
61
- },
62
- }
63
- };
64
- return getOption;`
65
- };
66
-
67
-
68
- const Indicator_radar = {
69
- code: `const getOption = () => {
70
- return {
71
- type: 'radar',
72
- data: {
73
- 'Referer of a Websit': [
74
- {
75
- name: '2018',
76
- value: [5000, 7000, 12000, 11000, 15000, 14000]
77
- },
78
- {
79
- name: '2019',
80
- value: [4000, 9000, 15000, 15000, 13000, 11000],
81
- symbol: 'rect',
82
- symbolSize: 12,
83
- lineStyle: {
84
- type: 'dashed'
85
- },
86
- label: {
87
- show: true,
88
- formatter: function (params) {
89
- return params.value;
90
- }
91
- }
92
- }
93
- ],
94
- },
95
- radar:{
96
- indicator: [
97
- { name: 'APP', max: 6000 },
98
- { name: 'PC', max: 16000 },
99
- { name: 'Mobile', max: 30000 },
100
- { name: 'Wechat', max: 35000 },
101
- { name: 'Mobile QQ', max: 50000 },
102
- { name: 'Mini App', max: 25000 }
103
- ],
104
- radius: 120,
105
- splitNumber: 3,
106
- shape: 'circle',
107
- name: {
108
- fontSize: 20,
109
- color: 'rgba(185, 11, 220, 1)'
110
- }
111
- },
112
- }
113
- };
114
- return getOption;`
115
- };
116
-
117
- const Multiple_radar = {
118
- code: `const getOption = () => {
119
- return {
120
- type: 'radar',
121
- data: {
122
- 'First': [
123
- {
124
- value: [60, 73, 85, 40],
125
- name: 'A Software'
126
- }
127
- ],
128
- "Second": [
129
- {
130
- value: [85, 90, 90, 95, 95],
131
- name: 'A Phone'
132
- },
133
- {
134
- value: [95, 80, 95, 90, 93],
135
- name: 'Another Phone'
136
- }
137
- ],
138
- 'Third': [
139
- {
140
- name: 'Precipitation',
141
- value: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 75.6, 82.2, 48.7, 18.8, 6.0, 2.3]
142
- },
143
- {
144
- name: 'Evaporation',
145
- value: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 35.6, 62.2, 32.6, 20.0, 6.4, 3.3]
146
- }
147
- ],
148
- },
149
- radar: [
150
- {
151
- indicator: [
152
- { text: 'Brand', max: 100 },
153
- { text: 'Content', max: 100 },
154
- { text: 'Usability', max: 100 },
155
- { text: 'Function', max: 100 }
156
- ],
157
- center: ['25%', '40%'],
158
- radius: 80
159
- },
160
- {
161
- indicator: [
162
- { text: 'Look', max: 100 },
163
- { text: 'Photo', max: 100 },
164
- { text: 'System', max: 100 },
165
- { text: 'Performance', max: 100 },
166
- { text: 'Screen', max: 100 }
167
- ],
168
- radius: 80,
169
- center: ['50%', '60%']
170
- },
171
- {
172
- indicator: (function () {
173
- var res = [];
174
- for (var i = 1; i <= 12; i++) {
175
- res.push({ text: i + '月', max: 100 });
176
- }
177
- return res;
178
- })(),
179
- center: ['75%', '40%'],
180
- radius: 80
181
- }
182
- ],
183
- }
184
- };
185
- return getOption;`
186
- };
187
-
188
- const ex1 = new $visualify.LiveEditor(Basic_Radar).mount('#ex1');
189
- const ex2 = new $visualify.LiveEditor(Circular_radar).mount('#ex2');
190
- const ex3 = new $visualify.LiveEditor(Indicator_radar).mount('#ex3');
191
- const ex4 = new $visualify.LiveEditor(Multiple_radar).mount('#ex4');
192
- </script>
193
-
194
- # Radar Chart
195
-
196
- ## Basic Radar Chart
197
-
198
- <div id="ex1"></div>
199
-
200
- ## Circular Radar Chart
201
-
202
- <div id="ex2"></div>
203
-
204
- ## Indicator Radar Chart
205
-
206
- <div id="ex3"></div>
207
-
208
- ## Multiple Radar Chart
209
-
210
- <div id="ex4"></div>
211
-
212
- ## Overall Configuration
213
-
214
- ### Basic Configuration
215
-
216
- The basic configuration includes:
217
-
218
- | Attribute | Type | Description | Choice | Default |
219
- | --------------- | ----------- | ----------------------- | -------------------------- | ------- |
220
- | title | string | The main title | User-defined title | - |
221
- | subtitle | string | A secondary title | User-defined subtitle | - |
222
- | width | string | The width dimension | Any valid CSS width value | - |
223
- | height | string | The height dimension | Any valid CSS height value | 400px |
224
- | legend | bool/object | show or hide legend | False, User-defined legend | {} |
225
- | xAxis | array/false | The xAxis | User-defined xAxis Data | [] |
226
- | yAxis | array/false | The yAxis | User-defined yAxis Data | [] |
227
- | label | object | The label | User-defined label | {} |
228
- | labelLine | object | The labelLine | User-defined labelLine | {} |
229
- | tooltip | object | The tooltip | User-defined tooltip | {} |
230
- | xAxisLineshow | bool | show or hide xAxisLines | True, False | true |
231
- | yAxisLineshow | bool | show or hide yAxisLines | True, False | true |
232
- | xAxisLabelShow | bool | show or hide xAxisLabel | True, False | true |
233
- | yAxisLabelShow | bool | show or hide yAxisLabel | True, False | true |
234
- | xAxisLabelColor | string | The xAxisLabelColor | Any valid CSS color value | - |
235
- | yAxisLabelColor | string | The yAxisLabelColor | Any valid CSS color value | - |
236
-
237
- ### Data Configuration
238
-
239
- | Attribute | Type | Description | Choice | Default |
240
- | --------- | ------------ | ----------- | ----------------- | --------- |
241
- | data | string | The data | User-defined data | {} |
242
- | type | string/array | The type | 'line', 'bar' | undefined |
243
- | radar | object | The radar | User-defined data | {} |
244
-
245
- ### Radar Configuration
246
-
247
- | Attribute | Type | Description | Choice | Default |
248
- | ----------- | ------ | --------------- | ------------------------ | --------- |
249
- | indicator | array | The indicator | User-defined indicator | [] |
250
- | radius | number | The radius | User-defined radius | 75 |
251
- | splitNumber | number | The splitNumber | User-defined splitNumber | 5 |
252
- | shape | string | The shape | 'polygon', 'circle' | 'polygon' |
253
- | splitArea | object | The splitArea | User-defined splitArea | {} |
1
+ <script defers>
2
+
3
+ const Basic_Radar = {
4
+ code: `const getOption = () => {
5
+ return {
6
+ type: 'radar',
7
+ data: {
8
+ 'Referer of a Websit': [
9
+ {
10
+ name: '2018',
11
+ value: [5000, 7000, 12000, 11000, 15000, 14000]
12
+ }
13
+ ],
14
+ },
15
+ radar:{
16
+ indicator: [
17
+ { name: 'APP', max: 6000 },
18
+ { name: 'PC', max: 16000 },
19
+ { name: 'Mobile', max: 30000 },
20
+ { name: 'Wechat', max: 35000 },
21
+ { name: 'Mobile QQ', max: 50000 },
22
+ { name: 'Mini App', max: 25000 }
23
+ ]
24
+ },
25
+ }
26
+ };
27
+ return getOption;`
28
+ };
29
+
30
+ const Circular_radar = {
31
+ code: `const getOption = () => {
32
+ return {
33
+ type: 'radar',
34
+ data: {
35
+ 'Referer of a Websit': [
36
+ {
37
+ name: '2018',
38
+ value: [5000, 7000, 12000, 11000, 15000, 14000]
39
+ }
40
+ ],
41
+ },
42
+ radar:{
43
+ indicator: [
44
+ { name: 'APP', max: 6000 },
45
+ { name: 'PC', max: 16000 },
46
+ { name: 'Mobile', max: 30000 },
47
+ { name: 'Wechat', max: 35000 },
48
+ { name: 'Mobile QQ', max: 50000 },
49
+ { name: 'Mini App', max: 25000 }
50
+ ],
51
+ radius: 120,
52
+ splitNumber: 3,
53
+ shape: 'circle',
54
+ splitArea: {
55
+ areaStyle: {
56
+ color: ['rgba(114, 172, 209, 0.2)','rgba(114, 172, 209, 0.4)', 'rgba(114, 172, 209, 0.6)','rgba(114, 172, 209, 0.8)', 'rgba(114, 172, 209, 1)'],
57
+ shadowColor: 'rgba(0, 0, 0, 0.3)',
58
+ shadowBlur: 10
59
+ }
60
+ }
61
+ },
62
+ }
63
+ };
64
+ return getOption;`
65
+ };
66
+
67
+
68
+ const Indicator_radar = {
69
+ code: `const getOption = () => {
70
+ return {
71
+ type: 'radar',
72
+ data: {
73
+ 'Referer of a Websit': [
74
+ {
75
+ name: '2018',
76
+ value: [5000, 7000, 12000, 11000, 15000, 14000]
77
+ },
78
+ {
79
+ name: '2019',
80
+ value: [4000, 9000, 15000, 15000, 13000, 11000],
81
+ symbol: 'rect',
82
+ symbolSize: 12,
83
+ lineStyle: {
84
+ type: 'dashed'
85
+ },
86
+ label: {
87
+ show: true,
88
+ formatter: function (params) {
89
+ return params.value;
90
+ }
91
+ }
92
+ }
93
+ ],
94
+ },
95
+ radar:{
96
+ indicator: [
97
+ { name: 'APP', max: 6000 },
98
+ { name: 'PC', max: 16000 },
99
+ { name: 'Mobile', max: 30000 },
100
+ { name: 'Wechat', max: 35000 },
101
+ { name: 'Mobile QQ', max: 50000 },
102
+ { name: 'Mini App', max: 25000 }
103
+ ],
104
+ radius: 120,
105
+ splitNumber: 3,
106
+ shape: 'circle',
107
+ name: {
108
+ fontSize: 20,
109
+ color: 'rgba(185, 11, 220, 1)'
110
+ }
111
+ },
112
+ }
113
+ };
114
+ return getOption;`
115
+ };
116
+
117
+ const Multiple_radar = {
118
+ code: `const getOption = () => {
119
+ return {
120
+ type: 'radar',
121
+ data: {
122
+ 'First': [
123
+ {
124
+ value: [60, 73, 85, 40],
125
+ name: 'A Software'
126
+ }
127
+ ],
128
+ "Second": [
129
+ {
130
+ value: [85, 90, 90, 95, 95],
131
+ name: 'A Phone'
132
+ },
133
+ {
134
+ value: [95, 80, 95, 90, 93],
135
+ name: 'Another Phone'
136
+ }
137
+ ],
138
+ 'Third': [
139
+ {
140
+ name: 'Precipitation',
141
+ value: [2.6, 5.9, 9.0, 26.4, 28.7, 70.7, 75.6, 82.2, 48.7, 18.8, 6.0, 2.3]
142
+ },
143
+ {
144
+ name: 'Evaporation',
145
+ value: [2.0, 4.9, 7.0, 23.2, 25.6, 76.7, 35.6, 62.2, 32.6, 20.0, 6.4, 3.3]
146
+ }
147
+ ],
148
+ },
149
+ radar: [
150
+ {
151
+ indicator: [
152
+ { text: 'Brand', max: 100 },
153
+ { text: 'Content', max: 100 },
154
+ { text: 'Usability', max: 100 },
155
+ { text: 'Function', max: 100 }
156
+ ],
157
+ center: ['25%', '40%'],
158
+ radius: 80
159
+ },
160
+ {
161
+ indicator: [
162
+ { text: 'Look', max: 100 },
163
+ { text: 'Photo', max: 100 },
164
+ { text: 'System', max: 100 },
165
+ { text: 'Performance', max: 100 },
166
+ { text: 'Screen', max: 100 }
167
+ ],
168
+ radius: 80,
169
+ center: ['50%', '60%']
170
+ },
171
+ {
172
+ indicator: (function () {
173
+ var res = [];
174
+ for (var i = 1; i <= 12; i++) {
175
+ res.push({ text: i + '月', max: 100 });
176
+ }
177
+ return res;
178
+ })(),
179
+ center: ['75%', '40%'],
180
+ radius: 80
181
+ }
182
+ ],
183
+ }
184
+ };
185
+ return getOption;`
186
+ };
187
+
188
+ const ex1 = new $visualify.LiveEditor(Basic_Radar).mount('#ex1');
189
+ const ex2 = new $visualify.LiveEditor(Circular_radar).mount('#ex2');
190
+ const ex3 = new $visualify.LiveEditor(Indicator_radar).mount('#ex3');
191
+ const ex4 = new $visualify.LiveEditor(Multiple_radar).mount('#ex4');
192
+ </script>
193
+
194
+ # Radar Chart
195
+
196
+ ## Basic Radar Chart
197
+
198
+ <div id="ex1"></div>
199
+
200
+ ## Circular Radar Chart
201
+
202
+ <div id="ex2"></div>
203
+
204
+ ## Indicator Radar Chart
205
+
206
+ <div id="ex3"></div>
207
+
208
+ ## Multiple Radar Chart
209
+
210
+ <div id="ex4"></div>
211
+
212
+ ## Overall Configuration
213
+
214
+ ### Basic Configuration
215
+
216
+ The basic configuration includes:
217
+
218
+ | Attribute | Type | Description | Choice | Default |
219
+ | --------------- | ----------- | ----------------------- | -------------------------- | ------- |
220
+ | title | string | The main title | User-defined title | - |
221
+ | subtitle | string | A secondary title | User-defined subtitle | - |
222
+ | width | string | The width dimension | Any valid CSS width value | - |
223
+ | height | string | The height dimension | Any valid CSS height value | 400px |
224
+ | legend | bool/object | show or hide legend | False, User-defined legend | {} |
225
+ | xAxis | array/false | The xAxis | User-defined xAxis Data | [] |
226
+ | yAxis | array/false | The yAxis | User-defined yAxis Data | [] |
227
+ | label | object | The label | User-defined label | {} |
228
+ | labelLine | object | The labelLine | User-defined labelLine | {} |
229
+ | tooltip | object | The tooltip | User-defined tooltip | {} |
230
+ | xAxisLineshow | bool | show or hide xAxisLines | True, False | true |
231
+ | yAxisLineshow | bool | show or hide yAxisLines | True, False | true |
232
+ | xAxisLabelShow | bool | show or hide xAxisLabel | True, False | true |
233
+ | yAxisLabelShow | bool | show or hide yAxisLabel | True, False | true |
234
+ | xAxisLabelColor | string | The xAxisLabelColor | Any valid CSS color value | - |
235
+ | yAxisLabelColor | string | The yAxisLabelColor | Any valid CSS color value | - |
236
+
237
+ ### Data Configuration
238
+
239
+ | Attribute | Type | Description | Choice | Default |
240
+ | --------- | ------------ | ----------- | ----------------- | --------- |
241
+ | data | string | The data | User-defined data | {} |
242
+ | type | string/array | The type | 'line', 'bar' | undefined |
243
+ | radar | object | The radar | User-defined data | {} |
244
+
245
+ ### Radar Configuration
246
+
247
+ | Attribute | Type | Description | Choice | Default |
248
+ | ----------- | ------ | --------------- | ------------------------ | --------- |
249
+ | indicator | array | The indicator | User-defined indicator | [] |
250
+ | radius | number | The radius | User-defined radius | 75 |
251
+ | splitNumber | number | The splitNumber | User-defined splitNumber | 5 |
252
+ | shape | string | The shape | 'polygon', 'circle' | 'polygon' |
253
+ | splitArea | object | The splitArea | User-defined splitArea | {} |