2016-10-15 9 views
0

の範囲私はD3S軸オブジェクトはその原点位置を取る方法と、それが固定されている場所に少し混乱しています(私はその左上を想定)D3軸原点の変更は

また、それは、原点の変更のように見えます例えば、関連するスケールの範囲ごとに、下の2つの軸が異なる位置で開始する

1軸

//Xscale with scale not augmented  
    var stageXScale=d3.scaleLinear()    
     .domain([0,150]) 
     .range([0,150]); 

    var stageXAxis = d3.axisBottom(stageXScale) //unaug axis 
     .ticks(20); 

2軸

//scale which is augmented 
    var stageXScaleAug=d3.scaleLinear()    
     .domain([0,stageWidth]) 
     .range([0+stageMarginLeft,150+stageMarginLeft]); 

    var stageXAxisAug = d3.axisBottom(stageXScaleAug)  //aug axis 
     .ticks(20); 

軸の原点が親コンテナの原点にマッピングされていないのはなぜですか。軸のスケールがこれを変更するのはなぜですか。ここ はJsとフィドルの例である:

https://jsfiddle.net/Snedden27/3wsx8bdy/12/

答えて

1

(前transformに)軸の原点の位置は、スケールの範囲の最小値によって決定されます。

軸1の場合、範囲は[0,150]であり、軸は親要素の画面x座標0で始まります。

軸2の場合、範囲は[0+stageMarginLeft,150+stageMarginLeft]なので、軸は親要素の画面x座標stageMarginLeft(20)から始まります。

+0

私はいつも親の起源で軸を始めることができますスケールは無制限 – Snedden27

+0

あなたはいつもあなたのスケールの範囲を0で始めるのはなぜですか?それが「レンジ」の目的です。範囲は、軸が上に表示される親に対するスクリーン座標の範囲です。 – xli

関連する問題