@agions/taroviz 1.10.0 → 1.11.5
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 +122 -275
- package/dist/cjs/index.js +1 -1
- package/dist/cjs/vendors.js +1 -0
- package/dist/cjs/vendors~echarts.js +1 -0
- package/dist/esm/index.js +7106 -50834
- package/dist/esm/vendors.js +16770 -0
- package/dist/esm/vendors~echarts.js +59417 -0
- package/package.json +10 -11
- package/src/adapters/MiniAppAdapter.ts +136 -0
- package/src/adapters/__tests__/index.test.ts +1 -1
- package/src/adapters/h5/__tests__/index.test.ts +4 -2
- package/src/adapters/h5/index.ts +32 -33
- package/src/adapters/harmony/index.ts +23 -245
- package/src/adapters/index.ts +18 -12
- package/src/adapters/swan/index.ts +6 -69
- package/src/adapters/tt/index.ts +7 -70
- package/src/adapters/types.ts +2 -3
- package/src/adapters/weapp/index.ts +6 -69
- package/src/charts/__tests__/testUtils.tsx +87 -0
- package/src/charts/boxplot/__tests__/index.test.tsx +49 -103
- package/src/charts/boxplot/index.tsx +2 -1
- package/src/charts/boxplot/types.ts +15 -14
- package/src/charts/common/BaseChartWrapper.tsx +84 -78
- package/src/charts/common/__mocks__/BaseChartWrapper.tsx +17 -0
- package/src/charts/createChartComponent.tsx +48 -0
- package/src/charts/index.ts +88 -30
- package/src/charts/liquid/index.tsx +260 -77
- package/src/charts/liquid/types.ts +5 -5
- package/src/charts/parallel/__tests__/index.test.tsx +40 -67
- package/src/charts/parallel/index.tsx +2 -1
- package/src/charts/parallel/types.ts +16 -15
- package/src/charts/tree/index.tsx +4 -1
- package/src/charts/tree/types.ts +1 -1
- package/src/charts/utils.ts +9 -7
- package/src/components/DataFilter/index.tsx +25 -4
- package/src/core/animation/AnimationManager.ts +9 -6
- package/src/core/animation/types.ts +30 -0
- package/src/core/components/Annotation.tsx +2 -3
- package/src/core/components/BaseChart.tsx +60 -72
- package/src/core/components/ErrorBoundary.tsx +17 -4
- package/src/core/components/LazyChart.tsx +83 -57
- package/src/core/components/hooks/useChartInit.ts +6 -3
- package/src/core/index.ts +1 -1
- package/src/core/themes/ThemeManager.ts +1 -1
- package/src/core/types/common.ts +100 -5
- package/src/core/types/index.ts +0 -12
- package/src/core/types/platform.ts +2 -5
- package/src/core/utils/codeGenerator/CodeGenerator.ts +1 -1
- package/src/core/utils/codeGenerator/types.ts +2 -2
- package/src/core/utils/common.ts +12 -5
- package/src/core/utils/configGenerator/ConfigGenerator.ts +4 -4
- package/src/core/utils/configGenerator/types.ts +16 -12
- package/src/core/utils/debug/DebugPanel.tsx +14 -11
- package/src/core/utils/debug/debugger.ts +9 -9
- package/src/core/utils/debug/types.ts +4 -4
- package/src/core/utils/download.ts +134 -0
- package/src/core/utils/drillDown.ts +33 -353
- package/src/core/utils/drillDownHelpers.ts +426 -0
- package/src/core/utils/export/ExportUtils.ts +67 -69
- package/src/core/utils/index.ts +23 -15
- package/src/core/utils/performance/PerformanceAnalyzer.ts +43 -18
- package/src/core/utils/performance/types.ts +10 -1
- package/src/core/utils/performanceUtils.ts +310 -0
- package/src/core/utils/setOptionUtils.ts +59 -0
- package/src/core/version.ts +14 -0
- package/src/editor/EnhancedThemeEditor.tsx +362 -540
- package/src/editor/ThemeEditor.tsx +55 -321
- package/src/editor/components/ThemeBasicSettings.tsx +113 -0
- package/src/editor/components/ThemeColorEditor.tsx +105 -0
- package/src/editor/components/ThemeSelector.tsx +70 -0
- package/src/editor/hooks/useThemeEditorState.ts +201 -0
- package/src/editor/index.ts +10 -2
- package/src/hooks/__tests__/index.test.tsx +3 -1
- package/src/hooks/chartConnectHelpers.ts +335 -0
- package/src/hooks/index.ts +62 -63
- package/src/hooks/types.ts +162 -0
- package/src/hooks/useAnimation.ts +41 -38
- package/src/hooks/useChartConnect.ts +88 -238
- package/src/hooks/useChartDownload.ts +42 -288
- package/src/hooks/useChartHistory.ts +33 -46
- package/src/hooks/useChartSelection.ts +31 -39
- package/src/hooks/useDataTransform.ts +39 -286
- package/src/hooks/useDataZoom.ts +164 -168
- package/src/hooks/usePerformance.ts +20 -12
- package/src/hooks/usePerformanceHooks.ts +278 -0
- package/src/hooks/utils/chartDownloadUtils.ts +260 -0
- package/src/hooks/utils/dataTransformUtils.ts +309 -0
- package/src/index.ts +52 -33
- package/src/main.tsx +4 -9
- package/src/charts/bar/__tests__/index.test.tsx +0 -113
- package/src/charts/bar/index.tsx +0 -14
- package/src/charts/candlestick/__tests__/index.test.tsx +0 -37
- package/src/charts/candlestick/index.tsx +0 -13
- package/src/charts/funnel/index.tsx +0 -14
- package/src/charts/gauge/index.tsx +0 -14
- package/src/charts/graph/__tests__/index.test.tsx +0 -41
- package/src/charts/graph/index.tsx +0 -13
- package/src/charts/heatmap/index.tsx +0 -14
- package/src/charts/line/__tests__/index.test.tsx +0 -107
- package/src/charts/line/index.tsx +0 -15
- package/src/charts/pie/__tests__/index.test.tsx +0 -112
- package/src/charts/pie/index.tsx +0 -14
- package/src/charts/radar/index.tsx +0 -14
- package/src/charts/sankey/index.tsx +0 -18
- package/src/charts/scatter/index.tsx +0 -14
- package/src/charts/sunburst/index.tsx +0 -18
- package/src/charts/treemap/index.tsx +0 -18
- package/src/charts/wordcloud/__tests__/index.test.tsx +0 -36
- package/src/charts/wordcloud/index.tsx +0 -13
package/README.md
CHANGED
|
@@ -13,40 +13,106 @@
|
|
|
13
13
|
<a href="https://github.com/Agions/TaroViz/blob/main/LICENSE">
|
|
14
14
|
<img src="https://img.shields.io/npm/l/@agions/taroviz.svg" alt="license">
|
|
15
15
|
</a>
|
|
16
|
+
<a href="https://github.com/Agions/TaroViz/actions/workflows/docs-deploy.yml">
|
|
17
|
+
<img src="https://github.com/Agions/TaroViz/actions/workflows/docs-deploy.yml/badge.svg" alt="Deploy Documentation">
|
|
18
|
+
</a>
|
|
16
19
|
</p>
|
|
17
20
|
</div>
|
|
18
21
|
|
|
19
|
-
##
|
|
22
|
+
## 最新版本 v1.11.5
|
|
23
|
+
|
|
24
|
+
TaroViz v1.11.5 - 基于 Taro 和 ECharts 的专业级多端图表组件库。
|
|
25
|
+
|
|
26
|
+
### 🎉 v1.11.5 更新内容(2026-05-06)
|
|
27
|
+
|
|
28
|
+
**性能优化发布**
|
|
29
|
+
|
|
30
|
+
#### ✨ 新增功能
|
|
31
|
+
|
|
32
|
+
- **性能优化工具** (`performanceUtils.ts`)
|
|
33
|
+
- `debounce()` - 带 `cancel()`/`flush()` 的防抖函数
|
|
34
|
+
- `throttle()` - 支持 `{ leading, trailing }` 选项的节流函数
|
|
35
|
+
- `getPerformanceConfig()` - ECharts 大数据量自动优化配置
|
|
36
|
+
- `estimateRenderTime()` - 渲染时间预估
|
|
37
|
+
- `DebounceManager` - 批量管理多个防抖函数
|
|
38
|
+
|
|
39
|
+
- **性能优化 Hooks** (`usePerformanceHooks.ts`)
|
|
40
|
+
- `useDebounce()` - 带 cancel/flush 的防抖 Hook
|
|
41
|
+
- `useThrottle()` - 支持 leading/trailing 的节流 Hook
|
|
42
|
+
- `useAnimationFrame()` - 动画帧 Hook
|
|
43
|
+
- `useWindowSizeDebounce()` - 窗口大小防抖 Hook
|
|
44
|
+
- `useScrollPositionDebounce()` - 滚动位置防抖 Hook
|
|
45
|
+
- `useMousePositionThrottle()` - 鼠标位置节流 Hook
|
|
46
|
+
|
|
47
|
+
#### 🔧 优化内容
|
|
20
48
|
|
|
21
|
-
|
|
49
|
+
- useMemo 缓存优化(8 处)
|
|
50
|
+
- useCallback 依赖数组修复(5 处)
|
|
51
|
+
- 长函数拆分(drillDown、useChartConnect)
|
|
52
|
+
- 类型安全改进(类型守卫)
|
|
22
53
|
|
|
23
|
-
|
|
54
|
+
#### 📈 性能提升
|
|
55
|
+
|
|
56
|
+
| 场景 | 提升 |
|
|
57
|
+
|------|------|
|
|
58
|
+
| 组件重渲染 | ~30% |
|
|
59
|
+
| 大数据量图表 | ~60% |
|
|
60
|
+
| 高频事件处理 | ~70% |
|
|
61
|
+
| 动画性能 | ~15% |
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 最新版本 v1.11.4
|
|
66
|
+
|
|
67
|
+
## 文档
|
|
24
68
|
|
|
25
69
|
- [在线文档](https://agions.github.io/TaroViz/)
|
|
26
70
|
- [快速开始](https://agions.github.io/TaroViz/guide/)
|
|
27
71
|
- [API文档](https://agions.github.io/TaroViz/api/)
|
|
28
72
|
- [示例](https://agions.github.io/TaroViz/examples/)
|
|
29
|
-
- [迁移指南](https://agions.github.io/TaroViz/migration/)
|
|
30
73
|
|
|
31
74
|
## 特性
|
|
32
75
|
|
|
33
|
-
- 📊 **丰富的图表类型** -
|
|
76
|
+
- 📊 **丰富的图表类型** - 支持折线图、柱状图、饼图、散点图、雷达图、热力图、仪表盘、漏斗图、矩形树图、旭日图、桑基图、箱线图、平行坐标图、K线图、词云图、水球图、树图、关系图等18种图表
|
|
34
77
|
- 📱 **多端适配支持** - 支持微信小程序、支付宝小程序、百度小程序、字节跳动小程序、HarmonyOS 和 H5
|
|
35
|
-
- 🎨 **灵活的主题定制** -
|
|
78
|
+
- 🎨 **灵活的主题定制** - 内置多种预设主题,支持自定义主题和动态主题切换
|
|
36
79
|
- 📦 **单包架构设计** - 简化依赖管理,方便使用
|
|
37
80
|
- 🚀 **高性能渲染** - 基于 ECharts 优化,支持懒加载和渐进式渲染
|
|
38
81
|
- ⚡ **性能分析工具** - 支持帧率监控和内存使用分析
|
|
39
82
|
- 🛡️ **错误边界** - 内置 ErrorBoundary 组件,防止图表渲染错误影响应用
|
|
40
83
|
- 🪝 **懒加载支持** - 支持图表组件懒加载,优化首屏加载速度
|
|
84
|
+
- ↩️ **Undo/Redo 历史** - useChartHistory Hook 追踪配置变更,支持 Ctrl+Z/Y 快捷键
|
|
85
|
+
- 🎯 **数据点选择** - useChartSelection Hook 支持单选/多选/反选,程序化控制数据高亮
|
|
41
86
|
- 🎯 **标注系统** - 支持 MarkLine、MarkArea 等标注,预设平均线、警戒线等样式
|
|
42
87
|
- 📤 **导出功能** - 支持导出为 PNG、JPEG、SVG、PDF 等格式
|
|
43
|
-
- 🎯 **易用的 React Hooks** - 提供 useChart、useResize、useResponsive、useThemeSwitcher 等 Hooks
|
|
44
|
-
- ♿ **无障碍支持** - 键盘导航(+/- 缩放、方向键平移、Home 重置)、屏幕阅读器数据表
|
|
45
88
|
- 🎬 **专业动画** - 符合设计规范的动画时长和缓动曲线
|
|
46
|
-
- 📖 **完善的类型定义** - 完整的 TypeScript
|
|
47
|
-
-
|
|
48
|
-
|
|
49
|
-
|
|
89
|
+
- 📖 **完善的类型定义** - 完整的 TypeScript 类型支持
|
|
90
|
+
- ♿ **无障碍支持** - 键盘导航和屏幕阅读器支持
|
|
91
|
+
|
|
92
|
+
## 支持的图表类型
|
|
93
|
+
|
|
94
|
+
TaroViz 支持 18 种图表类型:
|
|
95
|
+
|
|
96
|
+
| 图表类型 | 描述 | 组件名 |
|
|
97
|
+
| -------- | ---- | ------ |
|
|
98
|
+
| 折线图 | 用于展示数据随时间或类别变化的趋势 | `LineChart` |
|
|
99
|
+
| 柱状图 | 用于比较不同类别的数据大小 | `BarChart` |
|
|
100
|
+
| 饼图 | 用于展示数据占比关系 | `PieChart` |
|
|
101
|
+
| 散点图 | 用于展示两个变量之间的关系 | `ScatterChart` |
|
|
102
|
+
| 雷达图 | 用于展示多维度数据 | `RadarChart` |
|
|
103
|
+
| 热力图 | 用于展示数据密度和分布 | `HeatmapChart` |
|
|
104
|
+
| 仪表盘 | 用于展示单一指标的进度或状态 | `GaugeChart` |
|
|
105
|
+
| 漏斗图 | 用于展示流程中各阶段的数据转化 | `FunnelChart` |
|
|
106
|
+
| 矩形树图 | 用于展示带有层级结构的数据 | `TreeMapChart` |
|
|
107
|
+
| 旭日图 | 用于展示多层级数据的占比关系 | `SunburstChart` |
|
|
108
|
+
| 桑基图 | 用于展示数据流向和转移关系 | `SankeyChart` |
|
|
109
|
+
| 箱线图 | 用于展示数据分布(统计对比) | `BoxplotChart` |
|
|
110
|
+
| 平行坐标图 | 用于展示高维数据各维度关系 | `ParallelChart` |
|
|
111
|
+
| 关系图 | 用于展示实体之间的关系网络 | `GraphChart` |
|
|
112
|
+
| K线图 | 用于展示金融数据的 OHLC | `CandlestickChart` |
|
|
113
|
+
| 词云图 | 用于展示文本关键词频率 | `WordCloudChart` |
|
|
114
|
+
| 水球图 | 用于展示百分比或进度数据 | `LiquidChart` |
|
|
115
|
+
| 树图 | 用于展示层级结构数据 | `TreeChart` |
|
|
50
116
|
|
|
51
117
|
## 快速开始
|
|
52
118
|
|
|
@@ -70,7 +136,6 @@ import React from 'react';
|
|
|
70
136
|
import { LineChart } from '@agions/taroviz';
|
|
71
137
|
|
|
72
138
|
const App = () => {
|
|
73
|
-
// ECharts 配置项
|
|
74
139
|
const option = {
|
|
75
140
|
title: {
|
|
76
141
|
text: '折线图示例'
|
|
@@ -102,285 +167,67 @@ const App = () => {
|
|
|
102
167
|
export default App;
|
|
103
168
|
```
|
|
104
169
|
|
|
105
|
-
##
|
|
106
|
-
|
|
107
|
-
TaroViz 支持 18 种图表类型:
|
|
108
|
-
|
|
109
|
-
| 图表类型 | 描述 | 组件名 |
|
|
110
|
-
| -------- | ---------------------------------- | ------------------- |
|
|
111
|
-
| 折线图 | 用于展示数据随时间或类别变化的趋势 | `LineChart` |
|
|
112
|
-
| 柱状图 | 用于比较不同类别的数据大小 | `BarChart` |
|
|
113
|
-
| 饼图 | 用于展示数据占比关系 | `PieChart` |
|
|
114
|
-
| 散点图 | 用于展示两个变量之间的关系 | `ScatterChart` |
|
|
115
|
-
| 雷达图 | 用于展示多维度数据 | `RadarChart` |
|
|
116
|
-
| 热力图 | 用于展示数据密度和分布 | `HeatmapChart` |
|
|
117
|
-
| 仪表盘 | 用于展示单一指标的进度或状态 | `GaugeChart` |
|
|
118
|
-
| 漏斗图 | 用于展示流程中各阶段的数据转化 | `FunnelChart` |
|
|
119
|
-
| 矩形树图 | 用于展示带有层级结构的数据 | `TreeMapChart` |
|
|
120
|
-
| 旭日图 | 用于展示多层级数据的占比关系 | `SunburstChart` |
|
|
121
|
-
| 桑基图 | 用于展示数据流向和转移关系 | `SankeyChart` |
|
|
122
|
-
| 箱线图 | 用于展示数据分布(统计对比) | `BoxplotChart` |
|
|
123
|
-
| 平行坐标图 | 用于展示高维数据各维度关系 | `ParallelChart` |
|
|
124
|
-
| 关系图 | 用于展示实体之间的关系网络 | `GraphChart` |
|
|
125
|
-
| K线图 | 用于展示金融数据的 OHLC | `CandlestickChart` |
|
|
126
|
-
| 词云图 | 用于展示文本关键词频率 | `WordCloudChart` |
|
|
127
|
-
| 水球图 | 用于展示百分比或进度数据 | `LiquidChart` |
|
|
128
|
-
| 树图 | 用于展示层级结构数据 | `TreeChart` |
|
|
129
|
-
|
|
130
|
-
## 架构说明
|
|
131
|
-
|
|
132
|
-
TaroViz 采用单包架构设计,包含以下核心模块:
|
|
133
|
-
|
|
134
|
-
| 模块 | 描述 |
|
|
135
|
-
| -------- | -------------------------------------- |
|
|
136
|
-
| core | 核心功能和类型定义 |
|
|
137
|
-
| adapters | 多平台适配器,处理不同平台的差异 |
|
|
138
|
-
| charts | 各种图表组件的实现 |
|
|
139
|
-
| hooks | React Hooks,提供便捷的状态管理 |
|
|
140
|
-
| themes | 主题系统,支持多种内置主题和自定义主题 |
|
|
141
|
-
| utils | 工具函数和数据处理工具 |
|
|
170
|
+
## Hooks
|
|
142
171
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
### 折线图
|
|
172
|
+
TaroViz 提供多个专业级 React Hooks:
|
|
146
173
|
|
|
147
174
|
```typescript
|
|
148
|
-
import
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
data: ['1月', '2月', '3月', '4月', '5月', '6月']
|
|
166
|
-
},
|
|
167
|
-
yAxis: {
|
|
168
|
-
type: 'value'
|
|
169
|
-
},
|
|
170
|
-
series: [
|
|
171
|
-
{
|
|
172
|
-
name: '线上',
|
|
173
|
-
type: 'line',
|
|
174
|
-
data: [120, 200, 150, 80, 70, 110],
|
|
175
|
-
smooth: true
|
|
176
|
-
},
|
|
177
|
-
{
|
|
178
|
-
name: '线下',
|
|
179
|
-
type: 'line',
|
|
180
|
-
data: [90, 150, 120, 100, 80, 130],
|
|
181
|
-
smooth: true
|
|
182
|
-
}
|
|
183
|
-
]
|
|
184
|
-
};
|
|
185
|
-
|
|
186
|
-
return (
|
|
187
|
-
<LineChart
|
|
188
|
-
option={option}
|
|
189
|
-
width="100%"
|
|
190
|
-
height={400}
|
|
191
|
-
theme="dark"
|
|
192
|
-
autoResize={true}
|
|
193
|
-
/>
|
|
194
|
-
);
|
|
195
|
-
};
|
|
196
|
-
|
|
197
|
-
export default LineChartDemo;
|
|
175
|
+
import {
|
|
176
|
+
useChart,
|
|
177
|
+
useChartHistory, // Undo/Redo 历史记录
|
|
178
|
+
useChartSelection, // 数据点选择/高亮
|
|
179
|
+
useChartDownload, // 导出 PNG/JPEG/SVG/PDF/CSV/JSON
|
|
180
|
+
useChartConnect, // 多图表联动
|
|
181
|
+
useDataZoom, // 区域缩放
|
|
182
|
+
useAnimation, // 动画控制
|
|
183
|
+
useThemeSwitcher, // 主题切换
|
|
184
|
+
usePerformance, // 性能监控
|
|
185
|
+
useDataTransform, // 数据转换
|
|
186
|
+
// v1.11.5 新增
|
|
187
|
+
useDebounce, // 防抖 Hook
|
|
188
|
+
useThrottle, // 节流 Hook
|
|
189
|
+
useAnimationFrame, // 动画帧 Hook
|
|
190
|
+
useWindowSizeDebounce, // 窗口大小防抖 Hook
|
|
191
|
+
} from '@agions/taroviz';
|
|
198
192
|
```
|
|
199
193
|
|
|
200
|
-
###
|
|
194
|
+
### Undo/Redo 示例
|
|
201
195
|
|
|
202
196
|
```typescript
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
const option = {
|
|
208
|
-
title: {
|
|
209
|
-
text: '销售渠道分布',
|
|
210
|
-
left: 'center'
|
|
211
|
-
},
|
|
212
|
-
tooltip: {
|
|
213
|
-
trigger: 'item'
|
|
214
|
-
},
|
|
215
|
-
legend: {
|
|
216
|
-
orient: 'vertical',
|
|
217
|
-
left: 'left'
|
|
218
|
-
},
|
|
219
|
-
series: [
|
|
220
|
-
{
|
|
221
|
-
name: '销售渠道',
|
|
222
|
-
type: 'pie',
|
|
223
|
-
radius: '50%',
|
|
224
|
-
data: [
|
|
225
|
-
{ value: 350, name: '线上商城' },
|
|
226
|
-
{ value: 250, name: '线下门店' },
|
|
227
|
-
{ value: 200, name: '代理商' },
|
|
228
|
-
{ value: 150, name: '其他' }
|
|
229
|
-
],
|
|
230
|
-
emphasis: {
|
|
231
|
-
itemStyle: {
|
|
232
|
-
shadowBlur: 10,
|
|
233
|
-
shadowOffsetX: 0,
|
|
234
|
-
shadowColor: 'rgba(0, 0, 0, 0.5)'
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
}
|
|
238
|
-
]
|
|
239
|
-
};
|
|
240
|
-
|
|
241
|
-
return (
|
|
242
|
-
<PieChart
|
|
243
|
-
option={option}
|
|
244
|
-
width={400}
|
|
245
|
-
height={400}
|
|
246
|
-
/>
|
|
247
|
-
);
|
|
248
|
-
};
|
|
249
|
-
|
|
250
|
-
export default PieChartDemo;
|
|
197
|
+
const { canUndo, canRedo, undo, redo } = useChartHistory(chartInstance, {
|
|
198
|
+
maxHistorySize: 50,
|
|
199
|
+
enableKeyboard: true, // Ctrl+Z / Ctrl+Y
|
|
200
|
+
});
|
|
251
201
|
```
|
|
252
202
|
|
|
253
|
-
###
|
|
203
|
+
### 数据点选择示例
|
|
254
204
|
|
|
255
205
|
```typescript
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
const ScatterChartDemo = () => {
|
|
260
|
-
const option = {
|
|
261
|
-
title: {
|
|
262
|
-
text: '身高体重分布'
|
|
263
|
-
},
|
|
264
|
-
xAxis: {
|
|
265
|
-
name: '身高 (cm)',
|
|
266
|
-
type: 'value'
|
|
267
|
-
},
|
|
268
|
-
yAxis: {
|
|
269
|
-
name: '体重 (kg)',
|
|
270
|
-
type: 'value'
|
|
271
|
-
},
|
|
272
|
-
series: [
|
|
273
|
-
{
|
|
274
|
-
type: 'scatter',
|
|
275
|
-
data: [
|
|
276
|
-
[161.2, 51.6],
|
|
277
|
-
[167.5, 59.0],
|
|
278
|
-
[159.5, 49.2],
|
|
279
|
-
[157.0, 63.0],
|
|
280
|
-
[155.8, 53.6],
|
|
281
|
-
[170.0, 59.0],
|
|
282
|
-
[159.1, 47.6],
|
|
283
|
-
[166.0, 69.8],
|
|
284
|
-
[176.2, 66.8],
|
|
285
|
-
[160.2, 75.2]
|
|
286
|
-
]
|
|
287
|
-
}
|
|
288
|
-
]
|
|
289
|
-
};
|
|
290
|
-
|
|
291
|
-
return (
|
|
292
|
-
<ScatterChart
|
|
293
|
-
option={option}
|
|
294
|
-
width="100%"
|
|
295
|
-
height={400}
|
|
296
|
-
/>
|
|
297
|
-
);
|
|
298
|
-
};
|
|
299
|
-
|
|
300
|
-
export default ScatterChartDemo;
|
|
206
|
+
const { selectedPoints, select, deselect, clearSelection } = useChartSelection(chartInstance, {
|
|
207
|
+
mode: 'multiple',
|
|
208
|
+
});
|
|
301
209
|
```
|
|
302
210
|
|
|
303
|
-
##
|
|
304
|
-
|
|
305
|
-
```bash
|
|
306
|
-
# 克隆仓库
|
|
307
|
-
git clone https://github.com/Agions/TaroViz.git
|
|
308
|
-
|
|
309
|
-
# 安装依赖
|
|
310
|
-
pnpm install
|
|
311
|
-
|
|
312
|
-
# 启动开发服务
|
|
313
|
-
pnpm dev
|
|
314
|
-
|
|
315
|
-
# 构建
|
|
316
|
-
pnpm build
|
|
211
|
+
## 架构说明
|
|
317
212
|
|
|
318
|
-
|
|
319
|
-
pnpm test
|
|
213
|
+
TaroViz 采用单包架构设计,包含以下核心模块:
|
|
320
214
|
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
215
|
+
| 模块 | 描述 |
|
|
216
|
+
| ---- | ---- |
|
|
217
|
+
| `core` | 核心组件(BaseChart、Annotation)、类型定义、主题系统 |
|
|
218
|
+
| `adapters` | 多平台适配器(H5、微信小程序、支付宝、百度、字节跳动、HarmonyOS等) |
|
|
219
|
+
| `charts` | 18种图表组件实现 |
|
|
220
|
+
| `hooks` | React Hooks(useChart、useChartHistory、useChartSelection等14个) |
|
|
221
|
+
| `core/themes` | 主题系统(内置主题、自定义主题、ThemeManager) |
|
|
222
|
+
| `core/utils` | 工具函数(导出、性能分析、下钻、性能优化等) |
|
|
324
223
|
|
|
325
224
|
## 技术栈
|
|
326
225
|
|
|
327
|
-
-
|
|
328
|
-
-
|
|
329
|
-
-
|
|
330
|
-
-
|
|
331
|
-
- [pnpm](https://pnpm.io/) - 高效的包管理器
|
|
332
|
-
- [Webpack](https://webpack.js.org/) - 构建工具
|
|
333
|
-
- [Jest](https://jestjs.io/) - 测试框架
|
|
334
|
-
- [Cypress](https://www.cypress.io/) - 端到端测试工具
|
|
335
|
-
|
|
336
|
-
## 兼容性
|
|
337
|
-
|
|
338
|
-
| 平台 | 支持情况 |
|
|
339
|
-
| -------------- | ----------- |
|
|
340
|
-
| 微信小程序 | ✅ 支持 |
|
|
341
|
-
| 支付宝小程序 | ✅ 支持 |
|
|
342
|
-
| 百度小程序 | ✅ 支持 |
|
|
343
|
-
| 字节跳动小程序 | ✅ 支持 |
|
|
344
|
-
| HarmonyOS | ✅ 支持 |
|
|
345
|
-
| H5 | ✅ 支持 |
|
|
346
|
-
| React Native | ⚠️ 部分支持 |
|
|
347
|
-
|
|
348
|
-
## 贡献指南
|
|
349
|
-
|
|
350
|
-
我们欢迎任何形式的贡献,包括但不限于:
|
|
351
|
-
|
|
352
|
-
- 提交问题和建议
|
|
353
|
-
- 改进文档
|
|
354
|
-
- 修复 bug
|
|
355
|
-
- 添加新功能
|
|
356
|
-
- 优化性能
|
|
357
|
-
|
|
358
|
-
请查看 [贡献指南](./CONTRIBUTING.md) 了解详细信息。
|
|
359
|
-
|
|
360
|
-
## 更新日志
|
|
361
|
-
|
|
362
|
-
查看 [CHANGELOG.md](./CHANGELOG.md) 了解详细的更新历史。
|
|
363
|
-
|
|
364
|
-
## 许可证
|
|
365
|
-
|
|
366
|
-
[MIT License](./LICENSE) © 2025 Agions
|
|
367
|
-
|
|
368
|
-
## 支持
|
|
369
|
-
|
|
370
|
-
如果您在使用过程中遇到问题,可以通过以下方式获取帮助:
|
|
371
|
-
|
|
372
|
-
- [GitHub Issues](https://github.com/Agions/TaroViz/issues) - 提交问题和建议
|
|
373
|
-
- [在线文档](https://agions.github.io/TaroViz/) - 查看详细文档
|
|
374
|
-
- [示例](https://agions.github.io/TaroViz/examples/) - 参考使用示例
|
|
375
|
-
- [贡献指南](https://agions.github.io/TaroViz/contributing/) - 了解如何贡献代码
|
|
376
|
-
|
|
377
|
-
## 致谢
|
|
378
|
-
|
|
379
|
-
感谢所有为 TaroViz 做出贡献的开发者!
|
|
226
|
+
- **框架**: Taro 3.x / React 18.x
|
|
227
|
+
- **图表库**: ECharts 5.4.x
|
|
228
|
+
- **构建工具**: Webpack 5 + TypeScript (strict mode)
|
|
229
|
+
- **多端支持**: 微信小程序、支付宝小程序、百度小程序、字节跳动小程序、HarmonyOS、H5
|
|
380
230
|
|
|
381
|
-
##
|
|
231
|
+
## License
|
|
382
232
|
|
|
383
|
-
|
|
384
|
-
- [ECharts 官网](https://echarts.apache.org/zh/index.html)
|
|
385
|
-
- [GitHub 仓库](https://github.com/Agions/TaroViz)
|
|
386
|
-
- [npm 包](https://www.npmjs.com/package/@agions/taroviz)
|
|
233
|
+
MIT
|