代码之家  ›  专栏  ›  技术社区  ›  JJD

如何计算均匀分布的轴刻度?

  •  2
  • JJD  · 技术社区  · 15 年前


    这些要求是:

    -此外,所有记号应显示为如下数字 10, 20, 30, ... -0.3, 0.1, 0.2, 0.4, ...

    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个桶的桶大小?

    1 回复  |  直到 11 年前
        1
  •  1
  •   Arthur Ronald    15 年前

    我不确定,但我认为这段代码可以帮助您(改编自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)不返回纯整数