--- title: PieChart description: "`PieChart` is a component for drawing pie charts to compare multiple sets of data." links: - style: https://github.com/yamada-ui/yamada-ui/tree/main/packages/react/src/components/chart/pie-chart.style.ts - source: https://github.com/yamada-ui/yamada-ui/tree/main/packages/react/src/components/chart - storybook: https://yamada-ui.github.io/yamada-ui?path=/story/components-chart-piechart--basic --- ```tsx interface Data { browser: string visits: number fill?: CSSProps["fill"] } const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => PieChart.mergeData([ { browser: "chrome", visits: faker.number.int({ max: 5000, min: 1000 }), }, { browser: "edge", visits: faker.number.int({ max: 5000, min: 1000 }), }, { browser: "firefox", visits: faker.number.int({ max: 5000, min: 1000 }), }, { browser: "opera", visits: faker.number.int({ max: 5000, min: 1000 }), }, { browser: "safari", visits: faker.number.int({ max: 5000, min: 1000 }), }, { browser: "other", visits: faker.number.int({ max: 5000, min: 1000 }), }, ]), [], ) return ``` ## Usage ```tsx import { PieChart } from "@yamada-ui/react" ``` ```tsx import { PieChart } from "@/components/ui" ``` ```tsx import { PieChart } from "@workspaces/ui" ``` ```tsx ``` ### Composition ```tsx const data = useMemo( () => createPolarChartData().map((item, index) => ({ ...item, fill: ["cyan", "green", "orange", "red", "blue", "gray"][index], })), [], ) return ( ) ``` ### Change Size ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => PieChart.mergeData(createPolarChartData()), [], ) return ( {(size, index) => ( )} ) ``` ### Change Color ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => PieChart.mergeData(createPolarChartData(), "blue"), [], ) return ``` ### Change Sector Colors ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => createPolarChartData().map((item, index) => ({ ...item, fill: ["cyan", "green", "orange", "red", "blue", "gray"][index], })), [], ) return ``` ### Hide Sector Stroke To hide sector stroke lines, set `sectorStroke` to `"none"`. ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => createPolarChartData().map((item, index) => ({ ...item, fill: ["cyan", "green", "orange", "red", "blue", "gray"][index], })), [], ) return ``` ### Add Legend To add the legend, set `withLegend` to `true`. The default is `false`. ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => createPolarChartData().map((item, index) => ({ ...item, fill: ["cyan", "green", "orange", "red", "blue", "gray"][index], })), [], ) return ``` To change the placement of the legend, set `legendProps.placement` to `"start-start"`, `"end-end"`, etc. The default is `"start-end"`. ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => createPolarChartData().map((item, index) => ({ ...item, fill: ["cyan", "green", "orange", "red", "blue", "gray"][index], })), [], ) return ``` ### Display Multiple Pies ```tsx const series = useMemo[]>( () => [ { dataKey: "visits", innerRadius: "80%", nameKey: "browser", }, { dataKey: "downloads", nameKey: "browser", outerRadius: "70%", }, ], [], ) const data = useMemo( () => PieChart.mergeData(createPolarChartData()), [], ) return ``` ### Add Label To display labels, set `label` or `pieProps.label` to `true`. The default is `false`. ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => createPolarChartData().map((item, index) => ({ ...item, fill: ["cyan", "green", "orange", "red", "blue", "gray"][index], })), [], ) return ``` ### Add Label Line To display label lines, set `labelLine` of `series` or `pieProps.labelLine` to `true`. The default is `false`. ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => createPolarChartData().map((item, index) => ({ ...item, fill: ["cyan", "green", "orange", "red", "blue", "gray"][index], })), [], ) return ( ) ``` ### Change Label Offset To change the label offset, set `label.offset` of `series` or `pieProps.label.offset` to a number. The default is `0`. ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => createPolarChartData().map((item, index) => ({ ...item, fill: ["cyan", "green", "orange", "red", "blue", "gray"][index], })), [], ) return ( ) ``` ### Add Label List To display values with label list, set `labelList` of `series` or `pieProps.labelList` to `true`. The default is `false`. ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => createPolarChartData().map((item, index) => ({ ...item, fill: ["cyan", "green", "orange", "red", "blue", "gray"][index], })), [], ) return ( ) ``` ### Change Padding Angle To change the padding angle, set `paddingAngle` of `series` or `pieProps.paddingAngle` to a number. The default is `0`. ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => PieChart.mergeData(createPolarChartData()), [], ) return ( ) ``` ### Change Start Angle To change the start angle, set `startAngle` of `series` or `pieProps.startAngle` to a number. The default is `90`. ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => PieChart.mergeData(createPolarChartData()), [], ) return ( ) ``` ### Change End Angle To change the end angle, set `endAngle` of `series` or `pieProps.endAngle` to a number. The default is `-270`. ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => PieChart.mergeData(createPolarChartData()), [], ) return ( ) ``` ### Change Inner Radius To change the inner radius, set `innerRadius` of `series` or `pieProps.innerRadius` to a number or string. The default is `"0%"`. ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => PieChart.mergeData(createPolarChartData()), [], ) return ( ) ``` ### Change Outer Radius To change the outer radius, set `outerRadius` of `series` or `pieProps.outerRadius` to a number or string. The default is `"100%"`. ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => PieChart.mergeData(createPolarChartData()), [], ) return ( ) ``` ### Sync To sync charts, set `syncId` to a string. ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => PieChart.mergeData(createPolarChartData()), [], ) return ( ) ``` ### Format To format values and labels, use `formatter`. ```tsx preview functional const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => createPolarChartData().map((item, index) => ({ ...item, fill: ["cyan", "green", "orange", "red", "blue", "gray"][index], })), [], ) return ( `${(percent * 100).toFixed(0)}%`, }, labelLine: true, labelList: { color: "white", formatter: (value) => (isString(value) ? toTitleCase(value) : value), }, }} tooltipProps={{ formatter: (value, name = "") => [ Number(value).toLocaleString(), toTitleCase(name), ], }} /> ) ``` ### Hide Tooltip To hide the tooltip, set `withTooltip` to `false`. The default is `true`. ```tsx const series = useMemo[]>( () => [{ dataKey: "visits", nameKey: "browser" }], [], ) const data = useMemo( () => PieChart.mergeData(createPolarChartData()), [], ) return ``` ## Props