Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro no gráfico

O código abaixo não está funcionando. Alguém pode me dizer qual foi o meu erro?

<meta charset="UTF-8">
<canvas id="tela" width="600" height="400"></canvas>

    <script>

        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 desenhaRetangulo(x, y, largura, altura, cor) {
            var tela = document.querySelector('canvas');
            var pincel = tela.getContext('2d');

            pincel.fillStyle = cor;
            pincel.fillRect(x,y, largura, altura);
            pincel.strokeStyle='black';
            pincel.strokeRect(x,y, largura, altura);
        }

        function desenhaBarra(x, y, serie, cores, texto) {

            desenhaTexto(x, y - 10, texto);

            var somaAltura = 0;
            for (var i = 0; i < serie.length; i++) {
                var altura = serie[i];
                desenhaRetangulo(x, y + somaAltura, 50, cores[i]);
                somaAltura = somaAltura + 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>
2 respostas

Oi Nelson, para que possamos te ajudar, quando você executa o código no navegador, qual o erro que acontece? você consegue ver isso indo no console do navegador e observando a mensagem.

solução!

Olá,

Quando você definiu a função "desenhaBarra"; ao chamar a função "desenhaRetangulo" você esqueceu da variável "altura" após o 50. O código ficaria da seguinte forma:

function desenhaBarra (x, y, serie, cores, texto) {

    desenhaTexto(x,y - 10, texto)

    var somaAltura = 0;

    for (var i=0; i<serie.length; i++) {

        var altura = serie [i];

        desenhaRetangulo(x, y + somaAltura, 50, altura, cores[i]);

        somaAltura = somaAltura + altura;
    }
}