Skip to content

ChartLite 轻量图表

一组移动端优先的轻量图表组件,适合健康、财务、运营看板等场景。组件使用 uni-app Canvas 2D 绘制,不依赖 ECharts,默认采用 Apple Health / Stocks 风格的柔和渐变与弱坐标视觉。

组件清单

  • LkChartStatCard:指标卡,组合主数值、趋势标签与迷你趋势线。
  • LkChartSparkline:迷你趋势线,适合嵌入卡片。
  • LkChartArea:面积趋势图,适合股票、收入、活跃度等连续趋势。
  • LkChartRing:环形进度 / 多段占比图,适合完成率、健康环、预算占比。
  • LkChartRadarLite:轻量雷达图,适合能力模型、健康维度、评分分布。

子组件索引

子组件适用场景数据模型主要能力
LkChartStatCard经营指标、健康摘要、账户概览LiteChartPoint[]主数值、趋势标记、内嵌迷你趋势
LkChartSparkline卡片内趋势线、列表行走势LiteChartPoint[]折线、面积渐变、末端高亮、触摸索引
LkChartArea页面级连续趋势LiteChartPoint[]面积图、柔和网格、X 轴首尾标签、触摸提示
LkChartRing完成率、预算占比、多段占比value/maxRingChartSegment[]单值环、多段环、中心文案
LkChartRadarLite能力模型、维度评分、健康雷达RadarLiteItem[]多维雷达、层级网格、标签与顶点

选择建议

  • 要在信息卡中展示“数值 + 趋势”,优先使用 LkChartStatCard
  • 要在已有卡片里嵌一条小趋势线,使用 LkChartSparkline
  • 要展示完整时间序列趋势,使用 LkChartArea
  • 要表达完成率或占比,使用 LkChartRing
  • 要比较多个维度分值,使用 LkChartRadarLite

基础用法

vue
<template>
  <lk-chart-stat-card
    title="今日步数"
    value="12,680"
    unit="steps"
    trend="up"
    trend-text="+18%"
    :data="steps"
  />

  <lk-chart-area :data="trend" :height="300" show-x-axis-label />

  <lk-chart-radar-lite :data="wellness" :height="320" />
</template>

数据格式

趋势数据

LkChartSparklineLkChartAreaLkChartStatCard 使用相同的数据点:

ts
interface LiteChartPoint {
  label?: string;
  value: number;
}

环图数据

ts
interface RingChartSegment {
  label?: string;
  value: number;
  color?: string;
}

雷达图数据

ts
interface RadarLiteItem {
  label: string;
  value: number;
  max?: number;
}

API

LkChartStatCard Props

参数说明类型默认值
title指标标题string''
value主数值string / number''
unit数值单位string''
description辅助描述string''
trend趋势方向'up' / 'down' / 'flat''flat'
trendText趋势文案string''
data迷你趋势数据LiteChartPoint[][]
showChart是否显示迷你趋势图booleantrue
chartHeight图表高度number / string112
color图表主色string'primary'

LkChartSparkline Props

参数说明类型默认值
data趋势数据LiteChartPoint[][]
height容器高度number / string120
padding内边距,单位 rpxnumber12
lineWidth线宽,单位 rpxnumber5
color图表主色string'primary'
area是否显示面积渐变booleantrue
showEndPoint是否显示末端高亮点booleantrue
tooltip是否启用触摸高亮booleantrue
animationDuration动画时长,单位 msnumber560

LkChartArea Props

参数说明类型默认值
data趋势数据LiteChartPoint[][]
height容器高度number / string300
padding内边距,单位 rpxnumber28
lineWidth线宽,单位 rpxnumber5
color图表主色string'primary'
showGrid是否显示柔和网格线booleantrue
showXAxisLabel是否显示 X 轴首尾标签booleanfalse
tooltip是否显示触摸提示booleantrue
defaultIndex默认高亮索引number-1
animationDuration动画时长,单位 msnumber700

LkChartRing Props

参数说明类型默认值
value单值模式当前值number0
max单值模式最大值number100
segments多段占比数据,传入后优先于 value/maxRingChartSegment[][]
height容器高度number / string240
strokeWidth圆环厚度,单位 rpxnumber24
padding内边距,单位 rpxnumber20
showTrack是否显示底轨booleantrue
title中心主标题string''
subtitle中心副标题string''
showCenter是否显示中心文字booleantrue
animationDuration动画时长,单位 msnumber700

LkChartRadarLite Props

参数说明类型默认值
data雷达图维度数据RadarLiteItem[][]
height容器高度number / string320
padding内边距,单位 rpxnumber42
levels网格层级number4
max默认最大值number100
color图表主色string'primary'
showLabel是否显示维度标签booleantrue
showPoint是否显示顶点booleantrue
animationDuration动画时长,单位 msnumber680

Events

组件事件名说明回调参数
LkChartSparklinehoverChange触摸高亮点变化(index: number)
LkChartAreahoverChange触摸高亮点变化(index: number)
LkChartRing当前版本未额外暴露自定义事件
LkChartRadarLite当前版本未额外暴露自定义事件
LkChartStatCard当前版本未额外暴露自定义事件

注意事项

WARNING

⚠️可能存在平台差异:图表基于 Canvas 2D 绘制,H5 与小程序在字体度量、抗锯齿、渐变渲染上可能存在细微差异。

TIP

数字类型高度会按 rpx 处理;如果需要固定 CSS 高度,可以传入字符串,例如 height="180px"

发布验收

chart-lite 聚合覆盖 lk-chart-arealk-chart-ringlk-chart-sparklinelk-chart-stat-cardlk-chart-radar-lite,已纳入 dynamic-visual showcase 回归,发布前按下面边界验收:

场景验收方式要点
展示台基线自动回归tests/visual/dynamic-visual-showcase.spec.ts 校验 chart-lite 聚合路由、verified 状态与中风险标记
子组件覆盖自动/人工area、ring、sparkline、stat-card、radar-lite 均在聚合 Demo 中可见
平台差异人工验收Canvas 文字度量、渐变、触摸高亮点位在 H5/App/小程序端可接受

TIP

子组件已拆出独立文档页;当前 Demo 与 showcase 仍复用 chart-lite 聚合演示,便于一次性覆盖 area、ring、sparkline、stat-card、radar-lite 的视觉回归。

基于 MIT 协议开源 · 粤ICP备2022114240号-3

ChartLite 轻量图表

正在连接预览服务...

请先运行 pnpm run dev:h5