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

Não sei onde estou errando

Tenho uma dúvida sobre este exercício.

Não sei onde estou errando que as coordenadas da altura y estão se sobrepondo.

Tem retângulo que está em cima um do outro.

Segue o código abaixo.

Alguém poderia me ajudar a entender.

Obrigada.

<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){

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

     desenhaTexto(50, y-10, texto);   

        var posicao=0;
        var alturaSoma=0;

        while (posicao<serie.length){

            desenhaRetangulo(50,y+alturaSoma,50,serie[posicao], cores[posicao]);
            posicao++;

            alturaSoma=alturaSoma+serie[posicao];

        }
    }

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

desenhaBarra(50,50,serie2015,cores,"2015");

</script>
1 resposta
solução!

Oi, Renata. Também estou começando os estudos mas creio que posso te ajudar em alguns pontos. Tenta deixar o seu código mais "limpo", isso vai te ajudar ler melhor o que você esta fazendo e te ajuda na hora de achar erros. Comentando seu código: 1- Dentro da sua função desenhaBarra, a função desenhaTexto esta recebendo o valor fixo no eixo X, recomendo mudar para desenhaTexto(x, y - 10, texto). 2- Sobre a sobreposição das barras, você precisa retornar para Y, a soma do Y mais o valor da posição no array. Ex.: y += serie[posicao];