Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Resposta - Gráfico de barras

Meu gráfico mostra os anos mas não ás cores, ficam as duas barrinhas pretas. O que houve?

<canvas width="600" height="400"></canvas>

<script>

    function desenhaRetangulo(x, y, cor) {
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');

        pincel.fillStyle = cores;
        pincel.fillRect(x, y, 50, 200);
        pincel.strokeStyle = 'black';
        pincel.strokeRect(x, y, 50, 200);
    }

    function desenhaTexto(x, y, texto) {
        var tela = document.querySelector('canvas');
        var pincel = tela.getContext('2d');

        pincel.font='15px Georgia';
        pincel.fillStyle='black';
        pincel.fillText(texto, x, y);    
    }
    function desenhaBarra(x, y, serie, cores, texto) {

        desenhaTexto(x, y - 10, texto);

        var alturaTotal = 0;
            for(var i = 0; i < serie.length; i++) {
                var altura = serie[i];
                desenhaRetangulo(x , y + alturaTotal, 50, altura, cores[i]);
                alturaTotal = alturaTotal + altura;
            }
    }

    var cores = ['blue','green','yellow', 'red'];
    var serie2015 = [50,25,20,5];
    var serie2016 = [65,20,13,2];

    desenhaBarra(50, 50, serie2015, cores, '2015');
    desenhaBarra(150, 50, serie2016, cores, '2016');    

</script>
1 resposta
solução!

Oi Sthefany

Tem alguns detalhes no seu código, existem 3 parâmetros na desenhaRetangulo e você estava passando 5 lá no for, fiz 2 comentários onde substitui:

<canvas width="600" height="400"></canvas>

<script>
  function desenhaRetangulo(x, y, cor) {
    var tela = document.querySelector("canvas");
    var pincel = tela.getContext("2d");

    pincel.fillStyle = cor; // aqui estava cores, mas o parâmetro é cor
    pincel.fillRect(x, y, 50, 200);
    pincel.strokeStyle = "black";
    pincel.strokeRect(x, y, 50, 200);
  }

  function desenhaTexto(x, y, texto) {
    var tela = document.querySelector("canvas");
    var pincel = tela.getContext("2d");

    pincel.font = "15px Georgia";
    pincel.fillStyle = "black";
    pincel.fillText(texto, x, y);
  }
  function desenhaBarra(x, y, serie, cores, texto) {
    desenhaTexto(x, y - 10, texto);

    var alturaTotal = 0;
    for (var i = 0; i < serie.length; i++) {
      var altura = serie[i];
      desenhaRetangulo(x, y + alturaTotal, cores[i]); // aqui você estava passando parâmetros que não existiam na criação da função
      alturaTotal = alturaTotal + altura;
    }
  }

  var cores = ["blue", "green", "yellow", "red"];
  var serie2015 = [50, 25, 20, 5];
  var serie2016 = [65, 20, 13, 2];

  desenhaBarra(50, 50, serie2015, cores, "2015");
  desenhaBarra(150, 50, serie2016, cores, "2016");
</script>

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software