Add Labels to D3 Elements. Need help!

Tell us what’s happening:
I am trying to set 3 units higher than the bar for texts, am I doing this wrong?
How about returning data point value line?

Your code so far


<body>
  <script>
    const dataset = [12, 31, 22, 17, 25, 18, 29, 14, 9];
    
    const w = 500;
    const h = 100;
    
    const svg = d3.select("body")
                  .append("svg")
                  .attr("width", w)
                  .attr("height", h);
    
    svg.selectAll("rect")
       .data(dataset)
       .enter()
       .append("rect")
       .attr("x", (d, i) => i * 30)
       .attr("y", (d, i) => h - 3 * d)
       .attr("width", 25)
       .attr("height", (d, i) => 3 * d)
       .attr("fill", "navy");
    
    svg.selectAll("text")
       .data(dataset)
       .enter()
       // Add your code below this line
       .append("text")
       .attr("x", (d, i ) => i * 30)
       .attr("y", (d, i) => h * d)
       .text((d) => d)
       
       
       
       // Add your code above this line
  </script>
<body>

Your browser information:

User Agent is: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36.

Link to the challenge:

h - 3 * d

This is the y value of the top of the bar. As you can see from the table of precedence ( MDN - Operator precedence ) multiplication is executed before the subtraction.
If you write this:

h * d

you’re note modifying the result by 3, you multiplicate the h value times d instead of subtract to h the value of 3*d
Below blurred the solution even if i think you realized the fix by yourself :slight_smile:

(h - 3*d) - 3

1 Like

Awesome, Thank you it was helpful.

1 Like