引自免费微信小程序:皆我百晓生
看起来你遇到的问题可能是由于ECharts在处理负数时的默认行为导致的。当饼图中有负数时,ECharts会将负数视为独立的一环,并且可能会影响中心点的计算。解决这个问题的一种方法是手动调整每个扇区的位置,使其在视觉上重合。下面是一个示例代码,展示了如何通过修改startAngle
和endAngle
属性来实现这个效果:
// 假设你的配置对象名为echartsOption
var option = {
title: {
text: '饼图示例'
},
tooltip: {},
legend: {
data: ['基金资产', '现金余额']
},
series: [
{
name: '资产分布',
type: 'pie',
radius: ['50%', '75%'],
center: ['50%', '50%'],
data: [
{ value: -4016976.94, name: '基金资产' }, // 负数值
{ value: 10000.00, name: '现金余额' } // 正数值
],
emphasis: {
itemStyle: {
shadowBlur: 10,
shadowOffsetX: 0,
shadowColor: 'rgba(0, 0, 0, 0.5)'
}
},
label: {
normal: {
formatter: '{b}: {c} ({d}%)'
},
show: true
},
labelLine: {
show: false
},
initAngle: 90, // 设置初始角度
clockwise: false, // 设置逆时针旋转
roseType: 'radius', // 使用径向玫瑰图类型
dataEach: function (params, piece) {
var total = 0;
for (var i = 0; i < params.data.length; i++) {
total += Math.abs(params.data[i].value);
}
var startAngle = 0;
var endAngle = 0;
if (piece.value > 0) {
startAngle = 0;
endAngle = 360 * piece.value / total;
} else {
startAngle = -360 * piece.value / total;
endAngle = 0;
}
piece.startAngle = startAngle;
piece.endAngle = endAngle;
}
}
]
};
// 初始化图表实例
var myChart = echarts.init(document.getElementById('main'));
// 绘制图表
myChart.setOption(option);
在这个示例中,我们使用了一个自定义的"dataEach"函数来动态计算每个扇区的起始角度(startAngle
)和结束角度(endAngle
)。这样,无论数据是正数还是负数,它们都会按照正确的角度绘制,从而使圆心重合。
请注意,你需要在HTML文件中有一个id为'main'的div来承载图表,例如:
<div id="main" style="width: 800px;height:600px;"></div>
确保已经引入了ECharts库,可以通过CDN方式引入:
<script src="https://cdn.jsdelivr.net/npm/echarts@5.2.2/dist/echarts.min.js"></script>
这段代码应该能解决你的问题,使饼图的圆心对齐。如果你还有其他疑问,欢迎继续提问。