【发布时间】:2014-02-12 17:32:58
【问题描述】:
最新的弧线图 1 - http://jsfiddle.net/NYEaX/699/ ***
我正在开发一组弧形图。
^这是我拥有的最新版本。
我的第一个问题 - 是当一组新数据进入时 - 动画出现闪烁。
我也有兴趣改变每段的内半径/外半径。
我可以在下面的代码中为 i 提供一个模数吗
getArc: function(){
var that = this;
var arc = d3.svg.arc()
.innerRadius(function(d, i){
return that.radius;
})
.outerRadius(function(d){
var maxHeight = 100;
var ratio = (d.height/maxHeight * 100)+that.radius;
return ratio;
})
.startAngle(function(d, i){
return d.startAngle;
})
.endAngle(function(d, i){
return d.endAngle;
});
return arc;
}
我已经更正了应用程序。
我现在已经设法在各个细分市场上进行了转变。
但是,我现在尝试使用段的值来改变它们的长度。所以我想创建一个看起来像图片示例的弧。
这是我得到的最新示例。
这是代码 - 我不确定如何通过 startAngle/endAngle 获取所有弧的总长度以提供正确的长度以完成解决方案。
setData: function(data, isSorted){
var diameter = 2 * Math.PI * this.radius;
var localData = new Array();
var displacement = 0;
var oldBatchLength = 0;
var totalSum = 0;
$.each(data, function(index, value) {
$.each(value.segments, function( ri, va) {
totalSum+= va.height;
});
});
$.each(data, function(index, value) {
var riseLevels = value.segments;
//var riseLevelCount = riseLevels.length;
//var arcBatchLength = 2*Math.PI;
//var arcPartition = arcBatchLength/riseLevelCount;
$.each(riseLevels, function( ri, value ) {
if(oldBatchLength !=undefined){
displacement+=oldBatchLength;
}
var segmentValue = value.height;
//var ratio = value.height/totalSum;
var arcBatchLength = segmentValue;//ratio*2*Math.PI;
var arcPartition = arcBatchLength/totalSum;
var startAngle = (ri*arcPartition);
var endAngle = ((ri+1)*arcPartition);
if(index!=0){
startAngle+=displacement;
endAngle+=displacement;
}
riseLevels[ri]["startAngle"] = startAngle;
riseLevels[ri]["endAngle"] = endAngle;
riseLevels[ri]["index"] = ri;
oldBatchLength = arcBatchLength;
});
//oldBatchLength = arcBatchLength;
localData.push(riseLevels);
});
var finalArray = new Array();
$.each(localData, function(index, value) {
$.each(localData[index], function(i, v) {
finalArray.push(v);
});
});
console.log("finalArray", finalArray);
return finalArray;
}
【问题讨论】:
-
闪烁是因为“反弹”补间。而且您似乎已经按段改变了外半径?
-
@旧国。请不要创建答案来提供有关您的问题的更多信息;相反,编辑问题(编辑页面的链接位于问题的底部)。当人们在活动列表中看到一个包含三个答案的问题时,他们认为不需要更多关注!
-
我添加了一个基于电影测量的动画图表版本 - jsfiddle.net/NYEaX/137
标签: javascript d3.js automatic-ref-counting