1
resposta

Meu código com legenda e dados mundiais atualizados

Depois de muito trabalho para entender (ainda fico confuso quando trabalho com arrays) consegui resolver o exercício e ainda me arrisquei a fazer outras peripécias. O gráfico está com titulo, legenda e dados mundiais reais atualizados de 2015 até 2018.

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

<script>

    var tela = document.querySelector('canvas');
    var pincel = tela.getContext('2d');

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

    function desenhaTexto(x , y, texto) 
    {
        pincel.font='bold 20px Georgia';
        pincel.fillStyle='black';
        pincel.fillText(texto, x, y);    
    }

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

        desenhaTexto(x + 25, y - 10, texto);

        var somaAltura = 0;
        for (var i = 0; i < serie.length; i++) {
            var altura = 2*serie[i];
            desenhaRetangulo(x, y + somaAltura, 100, altura, cores[i]);
            somaAltura = somaAltura + altura;
        }
    }

    function desenhaLegenda(x, y, cor, browser)
    {
        pincel.fillStyle = cor;
        pincel.fillRect(x,y, 20, 10);
        pincel.strokeStyle='black';
        pincel.strokeRect(x,y, 20, 10);

        pincel.font='bold 10px Georgia';
        pincel.fillStyle='black';
        pincel.fillText(browser, x + 25 , y + 10); 

    }

    function mostraLegenda()
    {
        x=80;
        y=35;

        for(var i=0; i<browsers.length; i++)
        {
            desenhaLegenda(x, y, cores[i],browsers[i]);
            x = x + 125;
        }


    }

    var browsers = ['Google Chrome', "Mozilla Firefox", "Apple Safari", "Outros"];
    var cores = ['blue','green','yellow', 'red'];
    var serie2015 = [45,11,13,31];
    var serie2016 = [49,8,13,30];
    var serie2017 = [54,6,14,26];
    var serie2018 = [59,5,14,22];

    desenhaRetangulo(0,0,600,400,"lightgrey");
    desenhaTexto(120,20,"Market share de navegadores");

    desenhaBarra( 25, 100, serie2015, cores, '2015');
    desenhaBarra(175, 100, serie2016, cores, '2016');
    desenhaBarra(325, 100, serie2017, cores, '2017');
    desenhaBarra(475, 100, serie2018, cores, '2018');

    mostraLegenda();


    pincel.font='bold 10px Georgia';
    pincel.fillStyle='black';
    pincel.fillText("Fonte: http://gs.statcounter.com/browser-market-share", 300 ,380); 


</script>
1 resposta

Opa, Erico! Muito bem!

Uma excelente forma de fundamentar ainda mais o conhecimento adquirido é justamente implementando alguns exercícios diferenciados criados por nós mesmos! Continue assim!

Quanto a sua dúvida sobre arrays, diga lá, o que vc ainda não entendeu completamente?

Qualquer coisa é só falar que eu te ajudarei a chegar à luz do conhecimento!

Grande abraço e bons estudos, meu aluno!