freeCodeCamp/curriculum/challenges/portuguese/04-data-visualization/data-visualization-with-d3/create-a-bar-for-each-data-...

2.5 KiB

id title challengeType forumTopicId dashedName
587d7fa8367417b2b2512bcd Criar uma barra para cada ponto de dados no conjunto 6 301482 create-a-bar-for-each-data-point-in-the-set

--description--

O último desafio adicionou apenas um retângulo ao elemento svg para representar uma barra. Aqui, você vai combinar o que você aprendeu até agora sobre data(), enter() e formas do SVG para criar e incluir um retângulo para cada ponto de dados no dataset.

Um desafio anterior mostrou o formato para criar e acrescentar um div para cada item no dataset:

d3.select("body").selectAll("div")
  .data(dataset)
  .enter()
  .append("div")

Existem algumas diferenças ao trabalhar com elementos rect em vez de elementos div. Os elementos rect devem ser incluídos em um elemento svg, não diretamente no body. Além disso, você precisa dizer ao D3 onde colocar cada rect na área do svg. O posicionamento da barra será tratado no próximo desafio.

--instructions--

Use os métodos data(), enter() e append() para criar e incluir um rect para cada item no dataset. As barras devem ser exibidas em cima umas das outras. Isto será corrigido no próximo desafio.

--hints--

O documento deve ter 9 elementos rect.

assert($('rect').length == 9);

O código deve usar o método data().

assert(code.match(/\.data/g));

O código deve usar o método enter().

assert(code.match(/\.enter/g));

O código deve usar o método append().

assert(code.match(/\.append/g));

--seed--

--seed-contents--

<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")
       // Add your code below this line



       // Add your code above this line
       .attr("x", 0)
       .attr("y", 0)
       .attr("width", 25)
       .attr("height", 100);
  </script>
</body>

--solutions--

<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", 0)
       .attr("y", 0)
       .attr("width", 25)
       .attr("height", 100);
  </script>
</body>