arcs: pie(data).map(arc => { const angle = Math.abs(arc.endAngle - arc.startAngle) return { ...arc, angle, angleDeg: radiansToDegrees(angle), } }),
const labels = indices.map((index, i) => { const position = positionFromAngle(angles[i], radius + labelOffset) const textAnchor = textAnchorFromAngle(angles[i]) return { id: index, angle: radiansToDegrees(angles[i]), anchor: textAnchor, ...position, } })
label: PropTypes.string.isRequired, fill: PropTypes.string.isRequired, }) ).isRequired, */ } export const PieDefaultProps = { sortByValue: false, innerRadius: 0, padAngle: 0, cornerRadius: 0, // layout startAngle: 0, endAngle: radiansToDegrees(Math.PI * 2), fit: true, // border borderWidth: 0, borderColor: { from: 'color', modifiers: [['darker', 1]], }, // radial labels enableRadialLabels: true, radialLabel: 'id', radialLabelsTextColor: { theme: 'labels.text.fill' }, radialLabelsLinkColor: { theme: 'axis.ticks.line.stroke' },
const textAnchorFromAngle = _angle => { const angle = radiansToDegrees(_angle) + 90 if (angle <= 10 || angle >= 350 || (angle >= 170 && angle <= 190)) return 'middle' if (angle > 180) return 'end' return 'start' }