2010-09-22 98 views
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桶桶大小?

回答

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)不返回一個純整數