gpt4 book ai didi

javascript - D3 中的饼图( donut )图段顺序

转载 作者:可可西里 更新时间:2023-11-01 02:30:30 27 4
gpt4 key购买 nike

我有一个使用 d3 构建的圆环图和一个 jQuery slider ,允许用户在不同的数据点之间进行选择。该图表动画化了数据值之间的转换,一切都很好。

问题:片段总是按逆时针大小顺序呈现(从大到小)。这意味着段根据它们的大小在图表中切换它们的位置。

这种行为让用户感到困惑,但不幸的是我不知道如何改变它。我希望这些片段保持在它们的初始位置。

工作 js-fiddle:http://jsfiddle.net/kerplunk/Q3dhh/

我相信问题一定出在执行实际补间的函数上:

// Interpolate the arcs in data space.
function pieTween(d, i) {
var s0;
var e0;
if(oldPieData[i]){
s0 = oldPieData[i].startAngle;
e0 = oldPieData[i].endAngle;
} else if (!(oldPieData[i]) && oldPieData[i-1]) {
s0 = oldPieData[i-1].endAngle;
e0 = oldPieData[i-1].endAngle;
} else if(!(oldPieData[i-1]) && oldPieData.length > 0){
s0 = oldPieData[oldPieData.length-1].endAngle;
e0 = oldPieData[oldPieData.length-1].endAngle;
} else {
s0 = 0;
e0 = 0;
}
var i = d3.interpolate({startAngle: s0, endAngle: e0}, {startAngle: d.startAngle, endAngle: d.endAngle});
return function(t) {
var b = i(t);
return arc(b);
};
}

最佳答案

d3 自动按饼图的值排序。幸运的是,禁用排序非常简单,只需在 donut 函数上使用 sort(null) 方法,即:

var donut = d3.layout.pie().value(function(d){
return d.itemValue;
}).sort(null);

这是一个 fiddle .

关于javascript - D3 中的饼图( donut )图段顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17169504/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com