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

2.6 KiB

id title challengeType forumTopicId dashedName
587d7fa8367417b2b2512bcd Creare una barra per ogni punto di dati nell'insieme 6 301482 create-a-bar-for-each-data-point-in-the-set

--description--

L'ultima sfida ha aggiunto solo un rettangolo all'elemento svg per rappresentare una barra. Qui combinerai ciò che hai imparato finora su data(), enter(), e forme SVG per creare e aggiungere un rettangolo per ogni punto dati in dataset.

Una sfida precedente ha mostrato il modo per creare e aggiungere un div per ogni elemento del dataset:

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

Ci sono alcune differenze nel lavorare con gli elementi rect invece che con gli elementi div. Gli elementi rect devono essere aggiunti ad un elemento svg, non direttamente al body. Inoltre, devi dire a D3 dove posizionare ogni rect all'interno dell'area svg. Il posizionamento della barra sarà coperto nella prossima sfida.

--instructions--

Usa i metodi data(), enter(), e append() per creare e aggiungere un rect per ogni elemento nel dataset. Le barre verranno tutte visualizzate l'una sopra l'altra; questo sarà risolto nella prossima sfida.

--hints--

Il tuo documento dovrebbe avere 9 elementi rect.

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

Il tuo codice dovrebbe usare il metodo data().

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

Il tuo codice dovrebbe utilizzare il metodo enter().

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

Il tuo codice dovrebbe usare il metodo 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>