2014-10-27 46 views
1

我有一個線性度:轉換給定的範圍值域值D3

var xRange.range([0, parentWidth]).domain([0, 100]); 

現在鼠標懸停我得到使用d3.mouse(container)鼠標光標的XY COORDS。然後我顯示一個浮動工具提示。我需要根據xRange比例將xy值從鼠標位置計算出來。

我該怎麼做?或者是否必須創建另一個具有交換範圍和域值的比例?

+0

您是否在尋找https://github.com/mbostock/d3/wiki/Quantitative-Scales#linear_invert? – Oleg 2014-10-27 11:39:41

+0

沒錯,我怎麼會錯過它?如果你把它作爲答案,我會標記它,謝謝! – 2014-10-27 12:31:35

回答

10

不需要另一個比例。對於線性(數字)輸入,您可以使用linear.invert(),其中:

返回輸入域x中輸出域y中相應值的值。這表示從範圍到域的逆映射。

例子:

var x = d3.scale.linear() 
     .domain([0,50]) 
     .range([0,100]); 

// domain to range: 
x(25); // 50 

// range to domain: 
x.invert(50); // 25 
+0

更多好消息:invert()也存在於其他尺度上,例如日誌,功能和日期。 – 2015-07-01 22:04:23