跳到正文
misoto22 design

图表

PieChart

一个整体的若干部分。

什么时候用它

只回答“大概占多少”,再精确就不行了。要排序或比较扇区——尤其是跨两张饼图比较——那是 BarChart 的活。

示例

default

Visitors by browser
Visitors by browser
browserValue
chrome275
safari200
firefox187
edge173
other90

shape

Visitors by browser — donut
Visitors by browser — donut
browserValue
chrome275
safari200
firefox187
edge173

labels and emphasis

Labelled
Labelled
browserValue
chrome275
safari200
firefox187
edge173
One wedge is the point
One wedge is the point
browserValue
chrome275
safari200
firefox187
edge173

loading

Visitors by browser
Loading

说明

一个整体的若干部分。

有必要说白:饼图只回答“大概占多少”,再精确就不行了。用眼睛比较两个相邻扇区,超过五个左右就不可靠;跨两张饼图比较更糟。当读者需要排序或比较时,<BarChart> 能把同一个问题回答得更好。

属性

PieChart props
属性类型默认值说明
children必填ReactNode组合进来的各个部分——坐标轴、网格、tooltip、图例,以及标记本身。
config必填ChartConfig扇区名 → 它的标签和上色。键必须和 `nameKey` 的取值对得上。
data必填TData[]图表要画的数据行。每一条对应一个点、一根柱或一个分类。
dataKey必填keyof TData & string存放每个扇区数值的数据字段。
nameKey必填keyof TData & string存放每个扇区名称的数据字段。
title必填string这张图在讲什么,用一句读者能据此行动的话。必填,而且即使不显示出来也会播报给读屏软件。
chartPropsComponentProps<typeof RechartsPieChart>通往原始 Recharts 图表元素的逃生口。
classNamestring最后合并到 figure 上,所以调用处可以决定它的尺寸和间距。
defaultSelectedSectorstring | nullnull首次渲染时点亮的扇区。
descriptionReactNode标题下面的一行——单位、时间窗口、需要提醒的地方。
hideDataTablebooleanfalse去掉隐藏的表格视图。只有当页面自己已经把数据印出来时,这才是对的。
isLoadingbooleanfalse把标记换成一张动画骨架,并保留已测量的高度,这样数据到位时页面不会跳。
onSelectionChange(selection: { name: string; value: number } | null) => void选中项变化时触发;被清除时传 null。
showTitleboolean把标题印在图上方,而不是藏起来。

类型

TSX
export type PieVariant = 'gradient'

无障碍

  • title 必填;数据行同样会渲染成一份视觉隐藏的表格。
  • 图例默认放在饼图下方,因为饼图没有一根给扇区命名的分类轴。
  • 组合一个 Label 把数字印在扇区上:饼图的弱点就是角度难读,印出来的数字直接消掉了这次猜测。
  • 只有一种填充样式,这是刻意的。扇区又小又不规则,往里塞纹理只会读成噪声。