1
resposta

Exercício "Gráfico de Barras" - Código comentado

alguém pode comentar esse código do exercício gráfico de barras para eu entender melhor?

obrigado

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

<script>

    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 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 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;
        }
    }

    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

Olá, Rodrigo? Tudo bem?

Nesse exercício o nosso objetivo é criar um gráfico de barras, e nós sabemos que o gráfico de barras é composto de vários retângulos, sendo um acima do outro, certo?

Bom, para construir a nossa função desenhaBarra utilizaremos as funções desenhaTexto, que irá ser o título do nosso gráfico e desenhaRetangulo que irá compor os retângulos do nosso gráfico.

Percebe-se que o percentual de utilização de cada navegador, está inserido no nosso array série. Cada valor do nosso array será a altura correspondente no retângulo.

Abaixo deixei o código com comentários sobre o que ocorre em cada linha:

function desenhaBarra(x, y, serie, cores, texto) {
    //Espera-se receber como argumento, o valor da posicao x, posicao y, um array serie(percentual), um array cores, um texto(ano)
    desenhaTexto(x, y - 10, texto); // chamando a função desenhaTexto, repare que o y-10 serve para o texto nao grudar na barra(ou seja eh apenas por estetica)

    //Nesse laco o objetivo eh recuperar o valor da serie, que corresponde a altura do retangulo
    var somaAltura = 0;  // Variável que será incrementada por altura em cada iteração
    for (var i = 0; i < serie.length; i++) {   //o laco pecorrera todo array serie, iterando uma unidade
        var altura = serie[i];                      //atribuindo a variavel altura, o elemento correspondente da posicao atual
        desenhaRetangulo(x, y + somaAltura, 50, altura, cores[i]);  //Desenha um retangulo a cada iteracao, e conforme a cor correspondente do iterador.
        somaAltura = somaAltura + altura;
    }
}

Espero ter ajudado.

Reforço que estou à disposição para tirar dúvidas.

Abraços,

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!