2

给定一个数据范围的最小值和最大值,如何计算桶在轴上的分布?
要求是:
- 轴刻度应均匀分布(大小相等)。
- 此外,所有刻度应显示为数字,如10, 20, 30, ...-0.3, 0.1, 0.2, 0.4, ...
- 计算应接受定义所需桶数的参数。

以下示例最多计算 10 个或更少的存储桶。

num buckets = 10
range length = 500
500 / 10 = 50
log_10(50) = 1,69
round up(1,69) = 2
10^2 = 100 bucket size
500 / 100 = 5 buckets

结果:有 5 个桶,每个桶的大小为 100。
这些步骤仅生成基于10^x哪些桶0.01, 0.1, 1, 10, 100, 1000 ...

如何计算正好 42 个桶的桶大小?

4

1 回答 1

1

我不确定,但我认为这段代码可以帮助你(改编自 JavaScript YUI YAHOO.util.DragDrop.js

var initPosition = 0;
var rangeLength  = 500;
var maxPosition  = (initPosition + rangeLength);
getTicks: function(bucketSize) {
    var axisTicks = [];

    var tickMap = {};
    for (i = initPosition; i <= maxPosition; i = i + bucketSize) {
        if (!tickMap[i]) {
            axisTicks[axisTicks.length] = i;

            tickMap[i] = true;
        }
    }

    return axisTicks;
}

缺点是,有时轴刻度不会均匀分布((initPosition + rangeLength)/bucketSize)不返回纯整数

于 2010-09-22T22:46:25.877 回答