使用 Recharts 实现循环进度条
Implement Circular progress bar using Recharts
我正在使用饼图的 recharts 库。
paddingAngle={0}
能够移除填充角度但想要移除单元格分隔符(白色)。
代码:
const data = [
{ id: "1", name: "L1", value: 75 },
{ id: "2", name: "L2", value: 25 }
];
<PieChart width={50} height={50}>
<text
x={25}
y={25}
textAnchor="middle"
dominantBaseline="middle"
>
25
</text>
<Pie
data={data}
dataKey="value"
innerRadius="80%"
outerRadius="100%"
fill="#82ca9d"
startAngle={90}
endAngle={-270}
paddingAngle={0}
cornerRadius={5}
>
<Cell
key="test"
fill="#CCC"
/>
</Pie>
</PieChart>
当前看起来像:
想这样实现:
如何实现?
谢谢
来自 v.1.2.0
属性 blendStroke
已添加到 PieChart
。所以你需要做的就是将它添加到你的 Pie 组件中。希望对您有所帮助!
const data = [
{ id: "1", name: "L1", value: 75 },
{ id: "2", name: "L2", value: 25 }
];
<PieChart width={50} height={50}>
<text
x={25}
y={25}
textAnchor="middle"
dominantBaseline="middle"
>
25
</text>
<Pie
data={data}
dataKey="value"
innerRadius="80%"
outerRadius="100%"
fill="#82ca9d"
startAngle={90}
endAngle={-270}
paddingAngle={0}
blendStroke
>
<Cell
key="test"
fill="#CCC"
/>
</Pie>
</PieChart>
终于找到解决办法了。建议使用 RadialBarChart
,而不是使用 PieChart
进行变通
解决方案:
const data = [
{ name: 'L1', value: 25 }
];
const circleSize = 30;
<RadialBarChart
width={circleSize}
height={circleSize}
cx={circleSize / 2}
cy={circleSize / 2}
innerRadius={12}
outerRadius={18}
barSize={2}
data={data}
startAngle={90}
endAngle={-270}
>
<PolarAngleAxis
type="number"
domain={[0, 100]}
angleAxisId={0}
tick={false}
/>
<RadialBar
background
clockWise
dataKey="value"
cornerRadius={circleSize / 2}
fill="#82ca9d"
/>
<text
x={circleSize / 2}
y={circleSize / 2}
textAnchor="middle"
dominantBaseline="middle"
className="progress-label"
>
25
</text>
</RadialBarChart>
我正在使用饼图的 recharts 库。
paddingAngle={0}
能够移除填充角度但想要移除单元格分隔符(白色)。
代码:
const data = [
{ id: "1", name: "L1", value: 75 },
{ id: "2", name: "L2", value: 25 }
];
<PieChart width={50} height={50}>
<text
x={25}
y={25}
textAnchor="middle"
dominantBaseline="middle"
>
25
</text>
<Pie
data={data}
dataKey="value"
innerRadius="80%"
outerRadius="100%"
fill="#82ca9d"
startAngle={90}
endAngle={-270}
paddingAngle={0}
cornerRadius={5}
>
<Cell
key="test"
fill="#CCC"
/>
</Pie>
</PieChart>
当前看起来像:
想这样实现:
如何实现?
谢谢
来自 v.1.2.0
属性 blendStroke
已添加到 PieChart
。所以你需要做的就是将它添加到你的 Pie 组件中。希望对您有所帮助!
const data = [
{ id: "1", name: "L1", value: 75 },
{ id: "2", name: "L2", value: 25 }
];
<PieChart width={50} height={50}>
<text
x={25}
y={25}
textAnchor="middle"
dominantBaseline="middle"
>
25
</text>
<Pie
data={data}
dataKey="value"
innerRadius="80%"
outerRadius="100%"
fill="#82ca9d"
startAngle={90}
endAngle={-270}
paddingAngle={0}
blendStroke
>
<Cell
key="test"
fill="#CCC"
/>
</Pie>
</PieChart>
终于找到解决办法了。建议使用 RadialBarChart
PieChart
进行变通
解决方案:
const data = [
{ name: 'L1', value: 25 }
];
const circleSize = 30;
<RadialBarChart
width={circleSize}
height={circleSize}
cx={circleSize / 2}
cy={circleSize / 2}
innerRadius={12}
outerRadius={18}
barSize={2}
data={data}
startAngle={90}
endAngle={-270}
>
<PolarAngleAxis
type="number"
domain={[0, 100]}
angleAxisId={0}
tick={false}
/>
<RadialBar
background
clockWise
dataKey="value"
cornerRadius={circleSize / 2}
fill="#82ca9d"
/>
<text
x={circleSize / 2}
y={circleSize / 2}
textAnchor="middle"
dominantBaseline="middle"
className="progress-label"
>
25
</text>
</RadialBarChart>