FunnelChart 漏斗图

支持阶段排序、居中对称显示、内置筛选与主题配置,风格与其他图表一致。

代码演示

基础用法

最小宽度控制

暗黑主题

API

FunnelChartProps

属性说明类型默认值版本
title图表标题string--
data扁平化数据数组(x 为阶段,y 为数值)FunnelChartDataItem[]--
color自定义主色string--
width图表宽度(px),移动端自适应为 100%number | string600-
height图表高度(px),移动端最大约 80% 屏宽(上限 400)number | string400-
className自定义类名string--
dataTime数据时间string--
theme图表与容器主题;dark 时容器内嵌 Ant Design 暗色算法,工具栏/筛选与画布一致;暗色下图例色块无白边,与浅色视觉区分'dark' | 'light''light'-
showLegend是否显示图例booleantrue-
legendPosition图例位置'top' | 'left' | 'bottom' | 'right''bottom'-
legendAlign图例水平对齐方式'start' | 'center' | 'end''start'-
showPercent是否显示百分比(相对第一层)booleantrue-
bottomLayerMinWidth最底层的最小宽度占比(0-1),相对于最大层的宽度。用于避免数据跨度过大时底层过窄难以交互。非法值(≤0 或 >1)视为不限制number0-
toolbarExtra头部工具条额外按钮React.ReactNode--
typeNames类型名称配置,用于图例和数据集标签{ rate?: string; name: string }--
statistic统计数据组件配置StatisticConfigType--
renderFilterInToolbar是否将过滤器渲染到工具栏(当为 true 时,ChartFilter 会显示在工具栏右侧)booleanfalse-

ChartContainerProps(继承)

属性说明类型默认值版本
classNames分层类名:root、toolbar、statisticContainer、filter、wrapper、chartChartClassNames--
loading加载态booleanfalse-
style根容器内联样式React.CSSProperties--
styles与各层 DOM 对应的内联样式ChartStyles--
variant容器描边变体'outline' | 'borderless'--

FunnelChartDataItem

字段说明类型默认值版本
category分类(用于外层筛选)string--
type数据序列名称(默认单序列)string--
x阶段名(将作为 labels)(必填)number | string--
y数值(必填)number | string--
filterLabel二级筛选标签(可选)string--
ratio与下一层的转化率(0-100 或 '80%'),最后一层可为 0;用于绘制两层之间的梯形与文本number | string--

ChartStatisticConfig

ChartStatisticConfig 继承自 ChartStatistic 组件的所有属性,详细 API 请参考 ChartStatistic 文档。

字段说明类型默认值版本
title指标标题string--
tooltip鼠标悬停时显示的提示信息string--
value显示的数值number | string | null | undefined--
precision数值精度(小数点后位数)number--
groupSeparator千分位分隔符string','-
prefix数值前缀(如货币符号)string''-
suffix数值后缀(如单位)string''-
formatter自定义格式化函数,优先级高于其他格式化选项(value: number | string | null | undefined) => React.ReactNode--
className自定义类名string''-
size组件尺寸'small' | 'default' | 'large''default'-
block是否使用块级布局(弹性占用空间,多个时平分父容器宽度)booleanfalse-
extra右上角自定义内容(图标、按钮等)React.ReactNode--

说明

  • 漏斗采用对称浮动条(Floating Bar)实现,自动按数值降序排列阶段。
  • Tooltip 默认显示相对第一层的百分比,可通过 showPercent 关闭。
  • 当数据跨度过大时(如第一层 10000,最后一层 10),可使用 bottomLayerMinWidth 参数保证底层最小宽度,便于用户交互。例如设置 bottomLayerMinWidth={0.1} 表示最底层宽度至少为最大层的 10%。
  • 使用 bottomLayerMinWidth 时,视觉宽度会被调整,但 Tooltip 和标签仍显示真实数据值,请根据实际情况合理使用。