2014-05-05 107 views
2

我正在使用NVD3散點圖/氣泡圖。這是對問題here的延續。我正在繪製y軸的對數基2值。但我希望y軸將原始值作爲對應於日誌基2比例的標籤。我無法理解如何去做。nvd3與對數刻度的氣泡圖

編輯

這是我用來繪製

data[i].values.push({ 
    x: random() 
    , y: log2(yValue) 
    , size: Math.random() 
    }); 

function log2(val) { 
console.log("val = " + val + " : " + Math.log(val)/Math.LN2) 
    return Math.log(val)/Math.LN2; 
} 

現在,y軸刻度具有的log 2的值。我想更改y軸刻度以顯示原始值而不是log2值。

感謝,

+0

請把你所擁有的在小提琴或plunker爲止。你一定會增加回答問題的機會。 – FernOfTheAndes

回答

2

,而不是直接計算,當你創建自己的數據陣列,保留原樣,然後使用一個log scale您軸線日誌。

要在NVD3中使用自定義比例,請將其作爲參數傳遞給chart.yScale(scale)chart.xScale(scale)方法。

var chart = nv.models.lineChart() 
     .yScale(d3.scale.log()); 

只是不要嘗試使用y值數比例在酒吧或面積圖,因爲這些自動包含0域中(如果你試圖在log(0)密謀什麼,你會得到錯誤!)

一對夫婦的警告:

  • 蜱格式化功能上的工作比其他秤秤數不同;你可能會想把它作爲默認值。有關更多信息,請參閱文檔(上面的鏈接)。

  • .nice()方法似乎並沒有對數刻度非常有效地開展工作;當我在NVD3實時代碼網站上玩時,[1,99]的一個域導致軸上的最後一個tick值爲98.999999999。您可能需要明確檢查域是以數字開始還是結束。

還要注意,因爲你從來沒有真正與計算值處理的日誌(只是在標尺上的相對位置),你不需要指定基的對數。該文檔提到一個logScale.base(number) method,但似乎已經過時......