Wrong appearance of bar positions - d3.js

I am trying to create a bar chart with d3.js in angular.js - ionic app. Incorrect bar location. Here is a screenshot

Incorrect positioning of bars

But I need to be like this

enter image description here

Here is the javascript code

var margin = {top: 20, right: 20, bottom: 30, left: 40},
   width = $("#chart_div").width() - margin.left - margin.right,
    height = $("#chart_div").height() - margin.top - margin.bottom;

var x = d3.scale.ordinal()
    .rangeRoundBands([0, width], .1);

var y = d3.scale.linear()
    .range([height, 0]);

var xAxis = d3.svg.axis()
    .scale(x)
    .orient("bottom");

var yAxis = d3.svg.axis()
    .scale(y)
    .orient("left")
    .ticks(10);

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 + ")");

var data = [{"scenario":"Expected","hours":32},{"scenario":"Actual","hours":16}];

  x.domain(data.map(function(d) { return d.scenario; }));
  y.domain([0, d3.max(data, function(d) { return d.hours; })]);

  svg.append("g")
      .attr("class", "x axis")
      .attr("transform", "translate(0," + height + ")")
      .call(xAxis);

  svg.append("g")
      .attr("class", "y axis")
      .call(yAxis)
    .append("text")
      .attr("transform", "rotate(-90)")
      .attr("y", 6)
      .attr("dy", ".71em")
      .style("text-anchor", "end")
      .text("Hours");

  svg.selectAll(".bar")
      .data(data)
    .enter().append("rect")
      .attr("class", "bar")
      .attr("x", function(d) { return x(d.scenario); })
      .attr("width", x.rangeBand())
      .attr("y", function(d) { return y(d.hours); })
      .attr("height", function(d) { return height - y(d.hours); });

function type(d) {
  d.hours = +d.hours;
  return d;
}

      

The generated script is in d3 chart Please help me

+3


source to share


2 answers


When I faced this same problem, I realized that "rect" was not taking the correct width and height dimensions.



Try changing the class of the bar (change the name), which is probably in conflict with another existing one in your css library.

+1


source


I had similar problems. It turned out that the class .bar

I was using was conflicting with some ionic css Renaming it to .bar1

helped.



0


source







All Articles