2014-11-04 106 views
0

我一直在四處尋找,現在相當長的時間,看來我不是唯一的一個要求,但沒有工作解答:D3.js - 二級軸對準

一般情況下,我們如何能對齊D3中的次軸(Y2在Y1刻度前面的刻度)?

我不是特別尋找一點代碼;即使是一般的想法或算法都可以幫助我。這個想法是有這樣的事情傢伙Highchart那樣:

jsfiddle.net/jugal/3qdkc/

任何線索?

+1

獲取第一個軸的投影值(例如,通過在scale中運行'scale.ticks()')並將其傳遞給'scale2.invert()'以獲取第二個域的相應值。將這些值傳遞給'.tickValues()'作爲第二個軸。 – 2014-11-04 18:57:59

+0

非常感謝,最終如此輕鬆!它幫助我更好地瞭解D3的順序。 請作爲答案發布,以便我可以驗證它。 – Sciid 2014-11-05 19:46:07

回答

1

您可以使用比例尺.invert() function將投影(屏幕)座標轉換回原始域中的值。考慮到這一點,該過程是

  • 獲取第一個軸的投影值。如果您希望這些值是刻度值,請使用scale.ticks()並將它們傳遞給第一個刻度以轉換爲屏幕座標。
  • 現在將這些值傳遞給第二軸比例的scale.invert()。這將爲您提供第二個比例域中的值。
  • 將這些值傳遞給第二軸的.tickValues()