UNPKG

vislite

Version:

灵活、快速、简单的数据可视化交互式跨端前端库

176 lines (131 loc) 4.72 kB
--- name: vislite-lib description: "VISLite数据可视化库开发助手。当用户需要创建Canvas/SVG/WebGL图表、实现树布局/饼图/柱状图布局、使用坐标投影(墨卡托/等角斜方位)、矩阵变换、插值函数等可视化算法时使用。" --- # VISLite 数据可视化库 VISLite 是一款轻量、优雅的跨端数据可视化解决方案,支持 Web、uni-app、微信小程序、支付宝小程序等多平台。 **官网**: [https://oi-contrib.github.io/VISLite](https://oi-contrib.github.io/VISLite) **GitHub**: [https://github.com/oi-contrib/VISLite](https://github.com/oi-contrib/VISLite) ## 安装 ```bash npm install --save vislite ``` ## 模块索引 ### 画笔 (Brushes) #### 跨平台 Canvas(H5 / 微信 / 支付宝 / uni-app) - [Canvas.md](Canvas.md) - 统一 API,初始化方式因平台而异 - [minialipay/ui-canvas.md](minialipay/ui-canvas.md) - 支付宝小程序 Canvas 组件 - [miniprogram/ui-canvas.md](miniprogram/ui-canvas.md) - 微信小程序 Canvas 组件 - [uniapp/ui-canvas.md](uniapp/ui-canvas.md) - uni-app 跨平台使用指南 #### H5 专用画笔 - [SVG.md](SVG.md) - SVG 矢量图形绘制(仅 H5) - [WebGL.md](WebGL.md) - WebGL 3D 图形渲染(仅 H5) ### 布局算法 (Layouts) - [TreeLayout.md](TreeLayout.md) - 树状布局,支持 TB/LR/RL/BT 方向 - [PieLayout.md](PieLayout.md) - 饼图/环形图布局 - [BarLayout.md](BarLayout.md) - 柱状图/条形图布局 ### 坐标投影 (Projections) - [Projections.md](Projections.md) - Mercator 墨卡托投影、Eoap 等角斜方位投影、MapCoordinate 地图坐标系 ### 变换与插值 - [Matrix.md](Matrix.md) - 4x4 矩阵变换(平移/旋转/缩放) - [Interpolation.md](Interpolation.md) - Cardinal/Hermite 三次插值函数 ### 工具函数 - [Utilities.md](Utilities.md) - ruler 刻度尺、animation 动画、getLoopColors 循环颜色、throttle 节流 ## 画笔平台支持说明 | 画笔 | H5 | 微信小程序 | 支付宝小程序 | uni-app | |------|-----|-----------|-------------|----------| | Canvas | ✅ `new Canvas(el)` | ✅ 组件方式 | ✅ 组件方式 | ✅ 组件方式 | | SVG | ✅ `new SVG(el)` | ❌ | ❌ | ❌ | | WebGL | ✅ `getWebGLContext()` | ❌ | ❌ | ❌ | | RawCanvas | ✅ | ✅ | ✅ | ✅ | **注意**: SVG 和 WebGL 仅支持 H5 端。Canvas 在不同平台的 API 完全一致,但初始化方式不同: - **H5**: `new Canvas(domElement)` - **小程序**: 通过 ui-canvas 组件的 `fetch()` 方法获取实例 ## 快速使用 ### H5 端使用 Canvas ```js import { Canvas } from 'vislite'; var painter = new Canvas(document.getElementById('root')); painter.config({ fillStyle: "red" }).fillCircle(200, 150, 100); // 设置区域用于交互 painter.setRegion('circle'); painter.bind('click', (regionName, x, y) => { console.log(regionName, x, y); }); ``` ### 小程序端使用 Canvas 详见各小程序平台的文档: - [微信小程序 Canvas](miniprogram/ui-canvas.md) - [支付宝小程序 Canvas](minialipay/ui-canvas.md) - [uni-app Canvas](uniapp/ui-canvas.md) ### 树布局 ```js import { Canvas, TreeLayout } from 'vislite'; var treeLayout = new TreeLayout(); treeLayout.setOption({ type: "rect", direction: "TB", x: 250, y: 20, width: 500, height: 260 }); var tree = treeLayout.use(data); // 绘制连线 for (var key in tree.node) { var pid = tree.node[key].pid; if (pid) { painter.beginPath() .moveTo(tree.node[key].left, tree.node[key].top) .bezierCurveTo(...) .stroke(); } } // 绘制节点 painter.fullCircle(tree.node[key].left, tree.node[key].top, 10); ``` ## 核心导出 ```js import { // 画笔 Canvas, // 跨平台(初始化方式不同) SVG, // 仅 H5 RawCanvas, // 跨平台 // 布局 TreeLayout, PieLayout, BarLayout, // 投影 Mercator, Eoap, MapCoordinate, // 变换 Matrix4, rotate, move, scale, // 插值 Cardinal, Hermite, // 工具 ruler, animation, getLoopColors, throttle, assemble, // WebGL(仅 H5) getWebGLContext, Shader, Texture, Buffer } from 'vislite'; ``` ## 典型场景 - 创建跨平台图表(柱状图、饼图、树图) - 地图可视化(墨卡托/等角斜方位投影) - 画布/SVG/WebGL 图形绑制 - 数据可视化算法应用 - 矩阵变换与插值计算 - 小程序/uni-app 多端开发