2016-11-07 4 views
1

を刻みシナリオです:私はX軸設定D3 V4は、だからここ線X1値

axisLeft().tickSize(-width)、y軸に対して同じことを、これは軸の外にグリッドを作る:

enter image description here

をすることは可能それをですティックラインからグリッドを作成し、同時にこのようなティック値を指すようにしますか?

enter image description here

(この例では、私は目盛り線までてmanualy X1の値を設定します)。

答えて

0

tickSizeを使用して、内側と外側の両方のティックを使用することはできません。正の値を指定すると、目盛りが外側に拡大し、負の値を指定すると、目盛りがプロット領域内で拡大します。

しかし、ダニの内側と外側の両方に異なる方法があります。私の好きなものは、軸ジェネレータを使わずに別々の線のセット(グリッド線)を作成することです(私の答えはこちら:https://stackoverflow.com/a/38329969/5768908参照)。これはより複雑ですが、異なる色、ストローク幅、不透明度などを設定できる利点があります。

このようなカスタマイズを許可しない簡単なアプローチは、ティックを左に変換しています。

.attr("transform", "translate(-someValue, 0)"); 

チェックデモ:

var svg = d3.select("body").append("svg"); 
 
var data = d3.range(10); 
 
var yScale = d3.scaleLinear().domain([0,10]).range([140,10]); 
 
var yAxis = d3.axisLeft(yScale).tickSize(-256).tickPadding(10); 
 
var gY = svg.append("g").attr("class", "y axis").attr("transform", "translate(50,0)").call(yAxis); 
 
d3.selectAll(".y.axis .tick line").attr("transform", "translate(-6,0)");
.y.axis .tick line{ 
 
\t stroke: #999 
 
}
<script src="https://d3js.org/d3.v4.min.js"></script>

+1

を望んを左に移動する、その後

.tickSize(width + someValue) 

そして、このデモでは、私はtickSizeを設定していますこれをうまくやってくれる公式な方法があるのですが、まだ私は推測していません。 答えと例をお寄せいただきありがとうございます。今のところ私は物事を単純にし、より複雑な別個のグリッド要素は必要ないため、ティックラインでtranslateを使用します。 –

+0

また、今のところ最も簡単な解決策が目立つ線でtranslateを使用することであれば、translateではなくx1属性に外側の値を設定するだけですっきりとした方法で、目の線の外側の幅を追加する必要はありません幅まで。 –

+0

問題は軸ジェネレータで "x1"の位置を明示的に設定できないことです。ティックの「x1」は軸線上にあり、「x2」は「tickSize」の値(内側または外側)に依存します。 –

関連する問題