freeCodeCamp/curriculum/challenges/espanol/04-data-visualization/data-visualization-with-d3/change-the-presentation-of-...

3.6 KiB

id title challengeType forumTopicId dashedName
587d7fa8367417b2b2512bca Change the Presentation of a Bar Chart 6 301481 change-the-presentation-of-a-bar-chart

--description--

The last challenge created a bar chart, but there are a couple of formatting changes that could improve it:

  1. Add space between each bar to visually separate them, which is done by adding a margin to the CSS for the bar class

  2. Increase the height of the bars to better show the difference in values, which is done by multiplying the value by a number to scale the height

--instructions--

First, add a margin of 2px to the bar class in the style tag. Next, change the callback function in the style() method so it returns a value 10 times the original data value (plus the "px").

Note
Multiplying each data point by the same constant only alters the scale. It's like zooming in, and it doesn't change the meaning of the underlying data.

--hints--

The first div should have a height of 120 pixels and a margin of 2 pixels.

assert(
  $('div').eq(0).css('height') == '120px' &&
    $('div').eq(0).css('margin-right') == '2px'
);

The second div should have a height of 310 pixels and a margin of 2 pixels.

assert(
  $('div').eq(1).css('height') == '310px' &&
    $('div').eq(1).css('margin-right') == '2px'
);

The third div should have a height of 220 pixels and a margin of 2 pixels.

assert(
  $('div').eq(2).css('height') == '220px' &&
    $('div').eq(2).css('margin-right') == '2px'
);

The fourth div should have a height of 170 pixels and a margin of 2 pixels.

assert(
  $('div').eq(3).css('height') == '170px' &&
    $('div').eq(3).css('margin-right') == '2px'
);

The fifth div should have a height of 250 pixels and a margin of 2 pixels.

assert(
  $('div').eq(4).css('height') == '250px' &&
    $('div').eq(4).css('margin-right') == '2px'
);

The sixth div should have a height of 180 pixels and a margin of 2 pixels.

assert(
  $('div').eq(5).css('height') == '180px' &&
    $('div').eq(5).css('margin-right') == '2px'
);

The seventh div should have a height of 290 pixels and a margin of 2 pixels.

assert(
  $('div').eq(6).css('height') == '290px' &&
    $('div').eq(6).css('margin-right') == '2px'
);

The eighth div should have a height of 140 pixels and a margin of 2 pixels.

assert(
  $('div').eq(7).css('height') == '140px' &&
    $('div').eq(7).css('margin-right') == '2px'
);

The ninth div should have a height of 90 pixels and a margin of 2 pixels.

assert(
  $('div').eq(8).css('height') == '90px' &&
    $('div').eq(8).css('margin-right') == '2px'
);

--seed--

--seed-contents--

<style>
  .bar {
    width: 25px;
    height: 100px;
    /* Only change code below this line */


    /* Only change code above this line */
    display: inline-block;
    background-color: blue;
  }
</style>
<body>
  <script>
    const dataset = [12, 31, 22, 17, 25, 18, 29, 14, 9];

    d3.select("body").selectAll("div")
      .data(dataset)
      .enter()
      .append("div")
      .attr("class", "bar")
      .style("height", (d) => (d + "px"))
  </script>
</body>

--solutions--

<style>
  .bar {
    width: 25px;
    height: 100px;
    margin: 2px;
    display: inline-block;
    background-color: blue;
  }
</style>
<body>
  <script>
    const dataset = [12, 31, 22, 17, 25, 18, 29, 14, 9];

    d3.select("body").selectAll("div")
      .data(dataset)
      .enter()
      .append("div")
      .attr("class", "bar")
      .style("height", (d) => (d * 10 + "px"))
  </script>
</body>