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
But I need to be like this
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
prodeveloper
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
peterpalace
source
to share
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
Abdul23
source
to share