2017-08-15 16 views
0

すべての負の値を持つ水平d3棒グラフにxドメインとyドメインを設定する方法?すべて正の値を持つ棒グラフについてドメインは次のようになります。d3、jsすべての負の値で水平棒グラフ上のXおよびYドメインを設定する

x.domain([0, d3.max(data, function (d) { 
     return Math.abs(d.value); 
    })]); 
    y.domain(data.map(function (d) { 
     return d.dataset; 
    })); 

正と負の値と棒グラフの場合、ドメインは、次のようになります。

x.domain(d3.extent(data, function (d) { 
    return d.value; 
})); 

y.domain(data.map(function (d) { 
    return d.dataset; 
})); 

しかし、私は避難所」棒グラフがすべてのの負の値を持つとき、それを正しく得ることができました。

ありがとうございました。

+0

値が全て否定されたときに正確にうまくいきませんか? 'd3.extent'は負の値で動作するはずですが、min/maxを探すだけです。 –

+0

x軸はゼロではなく-10で始まり、y軸の行は表示されなくなり、y軸に沿ったラベルは表示されなくなります。 – user1608142

+0

私は次のコード行を持っていました:var x = d3.scaleLinear() .range([0、500]);私が500を400に置き換えると、y軸とラベルが再び現れました。しかし、x軸はまだ-10で始まります。 x軸とy軸の下端との間には、0〜10の線があるはずの隙間があります。 – user1608142

答えて

0

余計に余計なことをしていましたが、他のこともありました。

https://jsfiddle.net/fmr1x1gu/7/

var margin = {top: 30, right: 10, bottom: 50, left: 50}, 
    width = 500 - margin.left - margin.right, 
    height = 300 - margin.top - margin.bottom; 

svg.selectAll(".bar") 
    .data(data) 
    .enter().append("rect") 
    .attr("class", function (d) { 
     return "bar bar--" + (d.value < 0 ? "negative" : "positive"); 
    }) 
    .attr("x", function (d) { 
     return width - x(d.value); 
    }) 
    .attr("y", function (d) { 
     return y(d.dataset); 
    }) 
    .attr("width", function (d) { 
     return x(d.value); 
    }) 
    .attr("height", y.bandwidth()); 
+0

このEricを見ていただきありがとうございます。私はあなたのソリューションが私が探しているものではないと思います。バーはx軸上でゼロから始まり、バー上のラベルが表示されます。正と負の値が混在するこのフィドルを見てください。 https://jsfiddle.net/Kavitha_2817/fmr1x1gu/ – user1608142

+0

さて、あなたは今何をしようとしているのですか? https://jsfiddle.net/fmr1x1gu/11/ –

関連する問題