私はd3.jsを初めて使用していますが、私のX軸線が上に、下にはない(下の画像をご覧ください)。ここでd3.jsのX軸線を上から下に変更するには
私は(コードの量を減らすために簡略化)を使用しているコードです:
var data = [];
var days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"];
for(var i = 0; i<7; i++){
data.push({"letter":i,"frequency":Math.random(), "day":days[i]})
}
var svg = d3.select("#graph1"),
margin = {top: 80, right: 20, bottom: 100, left: 100},
width = +svg.attr("width") - margin.left - margin.right,
height = +svg.attr("height") - margin.top - margin.bottom;
var x = d3.scaleLinear().rangeRound([0, width]),
y = d3.scaleBand().rangeRound([0, height]);
var g = svg.append("g")
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");
x.domain([0,1]);
y.domain(data.map(function(d) { return d.day; }));
g.append("g")
.attr("class", "axis axis--x")
.attr("transform", "translate(0," + height + ")")
.call(d3.axisBottom(x).ticks(5, "%"));
g.append("g")
.attr("class", "axis axis--y")
.call(d3.axisLeft(y))
.append("text")
.attr("transform", "rotate(-90)")
//.attr("y", 6)
//.attr("dy", "0.71em")
//.attr("text-anchor", "end");
//setup the tool
g.append("g")
.attr("class", "grid")
/*.attr("transform", "translate("+margin.left+"," + margin.top + ")")*/
.call(d3.axisBottom(x)
.ticks(5)
.tickSize(height)
.tickFormat("")
);
var thickness = 14;
g.selectAll(".bar")
.data(data)
.enter().append("rect")
.attr("class", "bar")
.attr("x", 0)
.attr("y", function(d) { return y(d.day) + thickness/2 ;})
.attr("width", function(d) { return x(d.frequency);})
.attr("height", thickness);
私は彼のグリッドが上にラインを作り出しているとは思わない。彼のコードでは、ティックの長さが「高さ」のグリッドとしてx軸だけを使用しています。それは彼のプロットで見る垂直グリッド要素だけを生成します。軸を使用するのはやや難解ですが、実際には、グリッドを実装するには非常に良い方法です。ズームとパンコントロールを実装するときには非常に簡単でスケーラビリティが高いので、 'd3.event.transform '。 Mike Bostockでも定期的にその手法を使ってグリッドを描きます。 – HamsterHuey
私はちょうどコードを実行し、グリッド部分は上に行を作成しています。私はBostockがそれを行うと確信しています。]軸の最後のブラケットの形のパスが実際の軸の下に現れます。 .call(軸)を使用すると、4つの要素、括弧で囲まれたパス、各ティックのグループ、行ティック、および各ティックのテキストが作成されます。 –
フォローアップすると、添付画像のグリッド線は、@ Hangonが取り除こうとしている線と同じ灰色をしていることがわかります。 –