我有一个非常稀疏的数据集,我想用一个对数比例的直方图来绘制它。我希望X轴看起来类似于:
1,10,100,1000,10000
这意味着第一个垃圾桶将包括花费1-10,第二个11-10等等的观测,最后一个是+10.000。
function (pow, min, max) {
var range = [];
for (i = min; i < max; i++) {
range.push(Math.pow(pow, i));
}
return range;
}我能够生成给定的10的幂数组。现在,我想要的是将一组连续的值映射到该数组,这意味着:
1,23,2,105,2000年,30000
产出如下:
1,10,1,100,1000,10000
我尝试过使用d3.scale.threshold,但它似乎不像预期的那样工作。
发布于 2014-03-19 15:54:34
如果您只是在寻找一个映射您的值的函数,您所需要的只是一些简单的数学:
function f(x) {
return Math.pow(10, Math.floor(Math.log(x) / Math.log(10)));
}
alert( f(1) );
alert( f(23) );
alert( f(2) );
alert( f(105) );
alert( f(2000) );
alert( f(30000) );我对d3没有经验,所以我不能帮你。
https://stackoverflow.com/questions/22510760
复制相似问题