d3.js horizontal bar graph with positive and negative values - move y axis labels to far left side of graph -


on horizontal bar graph positive , negative values, y axis sit somewhere mid page, how move y axis labels far left side. taking jsfiddle example, can move foo, bar, etc. away y axis far left side of graph?
https://jsfiddle.net/kavitha_2817/fmr1x1gu/18/

var margin = {top: 30, right: 10, bottom: 50, left: 50}, width = 500, height = 300;  var data = [{value: -10, dataset:"barbaz"}, {value: 40, dataset:"barbar"}, {value: -10, dataset:"foobaz"}, {value: -50, dataset:"foobar"}, {value: 30, dataset:"baz"}, {value: -20, dataset:"bar"}, {value: -70, dataset:"foo"}];  // add svg var svg = d3.select('body').append('svg').attr('width', width +    margin.left   + margin.right).attr('height', height + margin.top +   margin.bottom).append('g').attr('transform', 'translate(' + margin.left   + ',' + margin.top + ')'); 

// set ranges

var y = d3.scaleband() .range([height, 0]) .padding(0.1);  var x = d3.scalelinear() .range([0, width]);  // scale range of data in domains x.domain(d3.extent(data, function (d) {     return d.value; })); y.domain(data.map(function (d) {     return d.dataset; }));  // append rectangles bar chart 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 x(math.min(0, d.value));     })     .attr("y", function (d) {         return y(d.dataset);     })     .attr("width", function (d) {         return math.abs(x(d.value) - x(0));     })     .attr("height", y.bandwidth());  // add x axis svg.append("g")     .attr("transform", "translate(0," + height + ")")     .call(d3.axisbottom(x));  // add y axis svg.append("g")     .attr("class", "y axis") 

you can achieve moving ticks manually:

// add y axis let yaxisgroup = svg.append("g")     .attr("class", "y axis")     .attr("transform", "translate(" + x(0) + ",0)")     .call(d3.axisright(y)); yaxisgroup.selectall('.tick')   .data(data)   .select('text')   .attr('x', function(d,i){return d.value<0?9:-9})   .style('text-anchor', function(d,i){return d.value<0?'start':'end'}) 

updated jsfiddle


Comments

Popular posts from this blog

ubuntu - PHP script to find files of certain extensions in a directory, returns populated array when run in browser, but empty array when run from terminal -

php - How can i create a user dashboard -

javascript - How to detect toggling of the fullscreen-toolbar in jQuery Mobile? -