跳到正文
misoto22 design

数据

Sparkline

一个词那么大的一串数字。

什么时候用它

表格单元格里、数字旁边、一行的末尾。要精确读趋势时,它需要的是 LineChart 和属于自己的空间。

示例

variants

line61
area61
bars61

in a table

Visitors by channel, last seven weeks
ChannelTrendThis week
Organic search71k
Paid social28k
Direct29k
Referral24k

说明

一个词那么大的一串数字——在表格单元格里、在数字旁边、在一行的末尾。

刻意不画坐标轴、不画网格、不带标签:迷你折线回答的是“这一路是什么形状”,而任何能让它回答“到底是多少”的装饰,同时也会让它大到没法内嵌——而内嵌正是选它的唯一理由。确切的值重要时,把数字印在它旁边(value 就是干这个的);需要精确读趋势时,它要的是 <LineChart> 和属于自己的空间。

不需要渲染引擎:它就是一条画在归一化 viewBox 上的 <path>,所以在表格里放一百个也不花什么代价。

属性

Sparkline props
属性类型默认值说明
data必填number[]这些数字,按顺序。不足两个点就什么都不画。
label必填string这串数字是什么,用一句话说。必填,而且它就是全部的可访问名称:迷你折线没有坐标轴也没有图例,再没有别的东西描述它。
classNamestring
domain[number, number]取值域,写成 `[min, max]`。不传就从数据里推。 只要一列迷你折线是要拿来对照的,就一定要把它固定下来:各自独立取域的话,每一行的波峰波谷看起来都一模一样,而这正是一张迷你折线表会主动误导人的那条路。
heightnumber28高度,单位像素。宽度由容器决定。
showLastbooleantrue标出最后一个点,通常那也正是被问到的那一个。
valueReactNode和标签一起播报出来的值——当前读数,已经格式化好。不传就退回最后一个数字。
variantSparklineVariant'line'

类型

TSX
export type SparklineVariant = 'line' | 'area' | 'bars'

无障碍

  • label 必填,而且它就是全部的可访问名称:迷你折线没有坐标轴也没有图例,再没有别的东西描述它。
  • 刻意不画坐标轴。任何能让它回答“到底是多少”的装饰,同时也会让它大到没法内嵌——而内嵌正是选它的唯一理由。
  • 一列迷你折线一定要固定 domain:各自独立取域的话,每一行的波峰波谷看起来都一模一样,表格就开始主动误导人了。
  • 一条 path,不需要渲染引擎——所以在表格里放一百个也不花什么代价。