跳到正文
misoto22 design

图表

FunnelChart

只会越来越窄的若干阶段。

什么时候用它

注册流程、招聘管线、结账流程。当流量会**分叉**而不只是收窄时,那是 SankeyChart——漏斗从构造上只有一条路径。

示例

default

Signup funnel
Signup funnel
stageValue
Visited4,200
Signed up1,800
Activated900
Paid320

variant

Signup funnel — stepped
Signup funnel — stepped
stageValue
Visited4,200
Signed up1,800
Activated900
Paid320

说明

只会越来越窄的若干阶段——注册流程、招聘管线、结账流程。

它的注意事项和所有漏斗图都一样:收窄编码的是相邻两阶段之间的比例,而眼睛读的是围出来的面积,于是漏斗会放大一次平缓的下滑、压平一次陡峭的下滑。当确切的流失率才是重点时,把百分比印到阶段上——<Funnel.Label> 就是干这个的——或者改用 <BarChart>,它把每个阶段编码在同一把老实的刻度上。

当流量会分叉、而不只是收窄时,改用 <SankeyChart>:漏斗从构造上只有一条路径。

属性

FunnelChart props
属性类型默认值说明
children必填ReactNode组合进来的各个部分——`<Funnel>`、`<Tooltip>`。
config必填ChartConfig阶段名 → 它的标签和上色。键必须和 `nameKey` 的取值对得上。
data必填TData[]各个阶段,最宽的在前。顺序就是漏斗本身;这里不会替你排序。
dataKey必填keyof TData & string存放每个阶段数值的数据字段。
nameKey必填keyof TData & string给每个阶段命名的数据字段。
title必填string这张图在讲什么,用一句读者能据此行动的话。必填,而且即使不显示出来也会播报给读屏软件。
chartPropsComponentProps<typeof RechartsFunnelChart>通往原始 Recharts 图表元素的逃生口。
classNamestring最后合并到 figure 上,所以调用处可以决定它的尺寸和间距。
descriptionReactNode标题下面的一行——单位、时间窗口、需要提醒的地方。
hideDataTablebooleanfalse去掉隐藏的表格视图。只有当页面自己已经把数据印出来时,这才是对的。
showTitleboolean把标题印在图上方,而不是藏起来。

类型

TSX
export type FunnelVariant = 'stepped' | 'ramp'

无障碍

  • title 必填;各阶段同样会渲染成一份视觉隐藏的表格。
  • 收窄编码的是相邻两阶段之间的**比例**,而眼睛读的是围出来的面积,所以漏斗会放大一次平缓的下滑。组合一个 Label 把数字印上去——那就是补救。
  • 默认样式让每个阶段共用同一种填充、把落差交给形状去说。再让每个阶段依次加深,等于把同一个事实编码两遍。