2013-03-25 44 views
2

我有點卡在某些東西上,我希望有人能指出我正確的解決方案。由於搜索的措辭,在谷歌上運行搜索沒有多大幫助。嘗試從d3.js SVG圖上的x座標檢索x值

我想要做的是獲得一個圖上x位置的'值'。在我的圖表上,我的x軸由日期組成。所以,如果我知道在圖上繪製的x座標點是200,例如,我希望x位置200的日期標籤。有很多教程和示例演示如何檢索x座標( 200),而不是x座標值(x-位置200的日期對象)。

我最終要做的是構建一個用戶註釋功能,該功能允許用戶在圖上選擇一個x位置,然後在該位置做一個註釋。我需要爲包含座標的x和y值的筆記存儲一個對象,並且由於圖上的點通過將Date對象應用於.x映射和重新映射,我需要爲任何點獲取Date我繪製在圖表上,以便它們可以被記錄和重新應用,甚至在用戶決定移動筆記工具時移動。

無論如何,我有種尋找一種方式進行逆向工程這個...

function getDateX(x, data) { 
    var dateX = x(data.Date); 
    return dateX; 
} 

但是...相反,在這種情況下,得到的x座標位置回,得到Date返回基於提供的x座標位置。

任何指向您可以提供給我的解決方案將非常感激。謝謝你的時間。

+0

每個刻度的.invert()函數。 http://stackoverflow.com/questions/11368096/d3-finding-graph-y-coordinate-with-mouseover提供了類似問題的答案 – widged 2013-03-25 03:40:53

回答

4
var x = d3.scale.linear() 
      .domain([0,200]) 
      .range([new Date("2000-01-01"), new Date("2001-01-01")]); 

new Date(x(150)) 

// Sun Oct 01 2000 21:00:00 GMT+0900 (東京 (標準時)) 

或者,如果你已經有了一個規模是日期 - >數

var x = d3.time.scale() 
      .range([0,200]) 
      .domain([new Date("2000-01-01"), new Date("2001-01-01")]); 

x.invert(150) 

// Sun Oct 01 2000 21:00:00 GMT+0900 (東京 (標準時))