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

区域图

山峰图

散点图

气泡图

饼图

玫瑰图

雷达图

词云图

进度条

仪表盘

漏斗图

K线图

(更多类型和样式可参考 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
adapters/ 下有独立目录,负责将平台 API 适配为统一的底层渲染接口。adapters/ 下新增目录并实现适配接口,无需修改 core 层代码。ChartOptions.context 字段要求传入的 canvas context 必须兼容 interface/CanvasContext 类型。interface/CanvasContext.ts,如需适配新平台,请实现该接口。core/chart/ 下创建新的渲染器类,需继承 BaseRenderer,实现通用渲染逻辑。core/factory.ts 中注册新图表类型。core/types/extra.ts 和 core/types/series.ts 中添加扩展配置类型。adapters/ 下新建平台目录(如 myplatform/)。index.ts)中暴露适配能力。interface/ 下新建对应平台目录并导出。详见 core/types/ 目录下类型定义,支持丰富的通用与扩展配置。
为方便用户开发,所有类型和接口均已在 UCharts/interface 统一导出。无论是图表配置类型、CanvasContext 适配类型,还是平台相关类型,均可通过如下方式导入:
import type { ChartOptions, CanvasContext } from 'UCharts/interface';
如需使用平台专属类型,可从 UCharts/interface/harmony 或 UCharts/interface/wechat 等路径导入。例如:
import type { HarmonyCanvasContext } from 'UCharts/interface/harmony';
import type { WechatCanvasContext } from 'UCharts/interface/wechat';
普通用户只需用 UCharts/interface 统一类型即可,平台专属类型仅在需要平台能力扩展时使用。
本项目采用 Apache License 2.0 开源协议。
感谢所有开源贡献者和用户的支持!