antvis/G2








The issue has been closed
V5能不能实现V4的饼图-半径大小 #6563
Leezen-Li posted onGitHub
问题描述
在官网找了很久,V5没有找到我要的百分比占比以及半径跟数据相关的饼状图或者玫瑰图,但是在V4找到了,但是V5迁移后写法也有点变化,写了一下没有写出来
重现链接
No response
重现步骤
// 计算最大值 const max = useMemo(() => { return Math.max(...realData.map((obj) => obj[yLabel] ?? 0), 0); }, [realData, yLabel]);
// 定义自定义图形组件 function SliceShape(style, context) { const { document } = context; return (P, value, defaults) => { const [p0, p1, p2, p3] = P;
// 计算中点 pm
// 计算比例,确定图形的宽度
const percent = value.items[1].value / max;
const xWidth = p2[0] - p1[0]; // X 轴宽度
const width = xWidth * percent; // 根据百分比计算宽度
// 计算路径点,确保每个图形的路径正确
const points = [
[p0[0], p0[1]], // 第一个点
[p1[0], p1[1]], // 第二个点
[p0[0] + width, p2[1]], // 根据宽度计算的第三个点
[p0[0] + width, p3[1]], // 根据宽度计算的第四个点
];
// 创建路径
const shape = document.createElement("path", {
style: {
...style,
// fill: value.color, // 使用传入的颜色
},
attrs: {
path: [
["M", points[0][0], points[0][1]], // 移动到第一个点
["L", points[1][0], points[1][1]], // 画到第二个点
["L", points[2][0], points[2][1]], // 画到第三个点
["L", points[3][0], points[3][1]], // 画到第四个点
"Z", // 闭合路径
],
},
});
return shape;
};
预期行为
No response
平台
- 操作系统: [macOS, Windows, Linux, React Native ...]
- 网页浏览器: [Google Chrome, Safari, Firefox]
屏幕截图或视频(可选)
No response
补充说明(可选)
No response