1
resposta

Exercicio executado com comentários.

Pessoal quero dicas e conselhos. Acabei por fazer sozinho mas não tenho certeza se poderia melhorar em alguma coisa.

Por favor façam suas criticas para eu poder visualizar outras opções de construção de código!

<meta charset="utf-8">

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

<script>

//Variaveis referente às funcionalidades de <canvas>.
    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');

//Função para desenhar texto em <canvas>.
    function drawString(x , y, string) {

        pincel.font='bold 11px Arial';
        pincel.fillStyle='black';
        pincel.fillText(string, x, y);  
    }

//    Função para desenhar retângulos em <canvas>.
    function drawRect(x, y, w, h, color) {

        pincel.fillStyle=color; 
        pincel.fillRect(x, y, w, h);
        pincel.strokeStyle='black'; 
        pincel.strokeRect(x, y, w, h);
    }

//Define o valor inicial de x e y no canvas. À partir do qual vão ser calculada a posições x e y dos retangulos.
    var y = 150;
    var x = 50;
//Função com laço de repetição para desenhar os devidos retangulos a serem representados como um grafico.
    function drawGraph(serie, string) {

        drawString(x-10, y-25, string);//posições da escrita pré definida por x-10 e y-25.

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


//valor fixo para a largura dos retangulos (width = 45)
//x e y foram pré-definidos em variaveis fora dessa função.
            drawRect(x, y, 45, serie[i], cores[i]);


//y aqui, será incrementado do valor do valor da variavel serie em sua devida posição, definida por i. (ex: y = 150 + 50) >>> serie2015[0] = 50. 
//Como essa operação esta em um for() o y será incrementado sempre que o valor de i mudar, assim sendo, o valor de y no final do laço de repetição terá todos os valores de series somados à y.
            y = y + serie[i];    
        }

        y = 150; //Retorna o valor inicial de y.
        x = x + 65; //Soma 65 à x para criação de novas barras à seguir.

    }

//Variaveis referente aos valores dos itens dos graficos, e no caso, os respectivos tamanhos dos retangulos a serem desenhados.

    var cores = ["blue", "yellow", "pink", "grey", "green", "red", "orange", "purple", "lightgrey", "lightblue"]; //diversas cores caso haja mais valres para serie.
    var serie2015 = [50,25,20,5];
    var serie2016 = [65,20,13,2];

    drawGraph(serie2015, "Série 2015");
    drawGraph(serie2016, "Série 2016");

</script>

1 resposta

Eduardo, boa tarde!

O código está ótimo, de verdade! nomes significativos, bem limpo e deixam bem claro o que fazem.

Uma observação é: em alguns casos não fica claro o que significa aquele número como na linha abaixo:

drawString(x-10, y-25, string);

O que são esses 10 e 25, tente separar em variáveis e colocar um nome que fale sua função! Isso serve para outros pontos do código

Espero ter ajudado e bons estudos!