跳到正文

这是开发版文档,跟随主分支更新,可能包含尚未发布的功能。

图表 ​

@dou-ui/chart 用于绘制折线图、柱状图、饼图等统计图表。一个图表由外壳 DouChart 和写在里面的系列、坐标轴组成。

完整的页面示例见区块经营看板、实时监控和门店对比。

安装 ​

图表是单独的包,需要和 dou-ui 一起安装:

sh
bun add dou-ui @dou-ui/chart

引入样式,再注册用到的组件:

ts
import 'dou-ui/style.css'
import '@dou-ui/chart/style.css'
import { DouChart, DouChartAxis, DouChartBar, DouChartLine } from '@dou-ui/chart'

app.use(DouChart).use(DouChartAxis).use(DouChartLine).use(DouChartBar)

基础用法 ​

data 是一组行数据,x 指定横轴使用哪个字段。系列组件用 y 指定纵轴的字段,name 设置系列名称。

1月2月3月4月5月6月7月8月9月10月11月12月3,0004,0005,0006,0007,0008,000
  • 宽度跟随容器,height 设置高度,默认 320px。
  • 没有写坐标轴时,自动显示底部的横轴和左侧的纵轴。
  • 只有一个系列时使用中性色。

系列画在 canvas 上,刻度文字、图例等是页面中的普通文字,跟随主题的字体和颜色。

多个系列 ​

多个系列按书写顺序依次使用色板中的颜色,图表下方自动显示图例。

9月7日14日21日28日10月5日12日19日26日2004006008001,000客流(人次)上海店北京店杭州店
  • color 指定任意 CSS 颜色;颜色有明确含义时(比如错误数),用 tone 取语气色。
  • :legend="false" 隐藏图例;只有一个系列时,legend 可以显示图例。

图例的用法见提示框与图例,配色见外观。

组合图 ​

不同类型的系列可以放在同一个图表里,比如柱状图配合折线图,再用第二条数值轴显示另一种单位。

1月2月3月4月5月6月7月8月02,0004,0006,00030354045订单数配送时长(分钟)订单数平均配送时长

第二条数值轴的用法见坐标轴。饼图、雷达图、漏斗图、矩形树图、旭日图和仪表盘需要单独放在一个图表里。

图表类型 ​

内置系列不够用时,可以用 defineChartSeries 定义自己的系列,见自定义系列。

只想在表格、卡片或文字旁边显示一段走势,不需要坐标轴和交互时,用基础组件 Sparkline 迷你图;按天显示一年里的数值,用 CalendarHeatmap 日历热力图。这两个组件在 dou-ui 里,不需要安装图表包。

没有数据 ​

所有系列都没有数值时,图表不画坐标轴,只在中间显示“没有数据”。empty 插槽可以替换这部分内容。

加载中 ​

loading 为 true 时,图表变淡,中间显示加载图标,这时没有数据也不会显示“没有数据”。数据到达后把 loading 设回 false,已有的图表会过渡到新数据。

动画 ​

图表第一次出现在屏幕上时有入场动画:柱子和面积从基线长出,折线从左到右画出,饼图沿顺时针展开。数据变化时,各个值移动到新的位置。

开启了减弱动效,或者数据点超过 2000 个时,图表直接显示最终的样子。

语言 ​

图表里的文字(“没有数据”、读屏读出的概要、数据表的表头等)跟随 ConfigProvider 的语言,内置简体中文、繁体中文和英文。

messages 可以改写其中几条:

template
<DouChart :data="rows" :messages="{ empty: '本月还没有订单' }" />
  • chartLocales 是内置的三份文案,按语言名称(如 'zh-CN')索引。要支持其他语言时,往里面加一份完整的 ChartMessages。
  • useChartMessages(override?) 返回当前语言的文案,自定义系列或提示框里需要相同的文字时使用。

API ​

Chart Props ​

名称说明类型默认值
data数据:行数组,或按列给的对象,见大量数据object[] | Record<string, ArrayLike>[]
x横轴的值:字段名,或从行取值的函数string | (row, index: number) => unknown行的序号
height高度,数字按 px 计算number | string320
horizontal横向:x 轴在左侧,数值在底部,见柱状图booleanfalse
legend显示或隐藏图例boolean多于一个系列时显示
legendPlacement图例的位置,见图例'top' | 'bottom' | 'right''bottom'
palette这个图表自己的配色,见外观string[]主题的 8 种颜色
patterns给有填充的系列加上图案,见外观booleanfalse
v-model:table在图表的位置显示数据表,见无障碍booleanfalse
loading显示加载状态booleanfalse
ariaLabel读屏读出的名称,替换自动生成的概要string—
messages替换语言包里的文字Partial<ChartMessages>—
ssrWidth服务端渲染时按这个宽度绘制(px),见服务端渲染number640

Chart Events ​

名称说明参数
select点击柱子、数据点或饼图的一块,见点击与悬停ChartPointEvent
hover提示框换到另一处内容;收起时参数为 nullChartPointEvent | null
update:table在数据表里按 Esc 关闭时触发false

Chart Slots ​

名称说明
default系列、坐标轴等组件
empty没有数据时显示的内容

Chart Exposes ​

名称说明
exportSVG导出 SVG 文本,见导出
exportPNG导出 PNG 图片,见导出