@orpha
To add horizontal lines on a bar chart in d3.js, you can create a new line element by using the append("line")
method and then setting the appropriate attributes for the line. Here's a step-by-step guide on how to do this:
1 2 3 4 5 6 |
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 + ")"); |
1 2 3 4 5 6 7 8 |
svg.selectAll(".bar") .data(data) .enter().append("rect") .attr("class", "bar") .attr("x", function(d) { return x(d.category); }) .attr("width", x.bandwidth()) .attr("y", function(d) { return y(d.value); }) .attr("height", function(d) { return height - y(d.value); }); |
1 2 3 4 5 6 7 8 9 10 |
svg.selectAll(".line") .data(horizonData) .enter().append("line") .attr("class", "line") .attr("x1", 0) .attr("y1", function(d) { return y(d.value); }) .attr("x2", width) .attr("y2", function(d) { return y(d.value); }) .style("stroke", "black") .style("stroke-width", 1); |
In this code snippet, horizonData
is an array containing the data for the horizontal lines. Make sure that y(d.value)
returns the y-coordinate for the horizontal line based on the data value.
1 2 3 4 |
.line { fill: none; shape-rendering: crispEdges; } |
This will create horizontal lines on the bar chart at the specified y-coordinates. You can adjust the positioning and styling of the lines as needed to match the design of your chart.