uCharts-v3

UCharts - 跨平台可视化图表库

项目简介

UCharts 是一个基于 TypeScript 实现的类型丰富、高性能、模块化、可扩展、支持主题定制的跨平台图表库。底层渲染逻辑全部采用 TypeScript 实现,上层通过适配层(adapters)适配到不同平台,包括鸿蒙(HarmonyOS)、微信小程序、uniapp 等,真正实现”一套核心,多端复用”。

特性

支持的图表类型

图表示例

以下为部分图表类型的鸿蒙平台实际渲染效果:

(更多类型和样式可参考 docs 目录)

下载安装

鸿蒙平台请查看适配目录的README.md文件,其他平台可通过Github下载

快速开始

<!-- 原生H5 -->
<html lang="zh-CN">
<head>
  ....
</head>
<body>
  <canvas id="chart" width="600px" height="400px"></canvas>
  ...
  <!-- 引入构建后的uCharts库 -->
  <script src="../adapters/dist/h5/ucharts-v3.min.js"></script>
  <script language="JavaScript">
    function createLineChart() {
      const canvas = document.getElementById('chart');
      const ctx = new UCharts.H5CanvasContext(canvas.getContext("2d"));
      const chart = new UCharts({
          type: "line",
          context: ctx,
          categories: ["2018","2019","2020","2021","2022","2023"],
          series: [
              {
                  name: "成交量A",
                  data: [35,8,25,37,4,20]
              },
              {
                  name: "成交量B",
                  data: [70,40,65,100,44,68]
              },
              {
                  name: "成交量C",
                  data: [100,80,95,150,112,132]
              }
          ],
          padding: [15,10,0,15],
          xAxis: { disableGrid: true },
          yAxis: { gridType: "dash", dashLength: 2 },
          extra: {
            line: {
              type: "straight",
              width: 2,
              activeType: "hollow"
            }
          }
      });
    }
    // 页面加载完成后默认显示折线图
    window.onload = function() {
      createLineChart();
    };
  </script>
</body>
</html>

具体平台的 context 获取方式请参考各自适配层文档。

目录结构

├── core/                # 图表核心能力(平台无关)
│   ├── types/           # 类型定义
│   ├── utils/           # 工具函数
│   ├── chart/           # 各类图表渲染器
│   ├── event/           # 事件系统
│   ├── animation/       # 动画系统
│   └── factory.ts       # 图表工厂
├── adapters/            # 平台适配层
│   ├── harmony/         # 鸿蒙适配
│   ├── h5/              # 原生H5适配
│   ├── wechat/          # 微信小程序适配
│   └── uniapp/          # uniapp适配
├── interface/           # 对外统一接口
│   ├── CanvasContext.ts   # 跨平台统一 canvas context 接口定义
├── examples/            # 示例代码
├── docs/                # 文档
└── README.md

跨平台适配层说明

开发指南

新增图表类型

新增平台适配层

  1. adapters/ 下新建平台目录(如 myplatform/)。
  2. 实现统一适配接口,封装平台 canvas、事件等能力。
  3. 在平台入口文件(如 index.ts)中暴露适配能力。
  4. 如有需要暴露给用户层的适配层类型,在 interface/ 下新建对应平台目录并导出。
  5. 更新文档说明。

配置选项

详见 core/types/ 目录下类型定义,支持丰富的通用与扩展配置。

类型与接口统一导出

为方便用户开发,所有类型和接口均已在 UCharts/interface 统一导出。无论是图表配置类型、CanvasContext 适配类型,还是平台相关类型,均可通过如下方式导入:

import type { ChartOptions, CanvasContext } from 'UCharts/interface';

如需使用平台专属类型,可从 UCharts/interface/harmonyUCharts/interface/wechat 等路径导入。例如:

import type { HarmonyCanvasContext } from 'UCharts/interface/harmony';
import type { WechatCanvasContext } from 'UCharts/interface/wechat';

普通用户只需用 UCharts/interface 统一类型即可,平台专属类型仅在需要平台能力扩展时使用。

性能优化

兼容性

链接

许可证

本项目采用 Apache License 2.0 开源协议。

致谢

感谢所有开源贡献者和用户的支持!