Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Necesito ayuda con mi codigo de logica de progrmacion - grafico de barras

Hola podrian ayudarme o explicarme cual es el error en mi codigo cuando lo quiero hacer usando while. No entiendo aun....

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

<script>

    function dibujarRectangulo(x, y, base, altura, color) {
        var pantalla = document.querySelector("canvas");
        var pincel = pantalla.getContext("2d");

        pincel.fillStyle=color;
        pincel.fillRect(x,y, base, altura);
        pincel.strokeStyle="black";
        pincel.strokeRect(x,y, base, altura);
    }

    function escribirTexto(x , y, texto) {
        var pantalla = document.querySelector("canvas");
        var pincel = pantalla.getContext("2d");

        pincel.font="15px Georgia";
        pincel.fillStyle="black";
        pincel.fillText(texto, x, y);    
    }

    function dibujarBarra (x,y,serie,colores,texto) {

        escribirTexto( x, y - 10, "GRAFICO");
        var sumaAltura = 0;
        var i = 0;
        var altura = serie[i];

        while (i < serie.length) {
            dibujarRectangulo(x, y + sumaAltura, 50, altura, colores[i]);
            sumaAltura = sumaAltura + altura;

            i++;
        }
    }

    var serie2009 = [6, 47, 41, 3, 3];
    var serie2019 = [81, 9, 3, 3, 4];
    var colores = ["blue","green","yellow", "red","gray"];


    dibujarBarra(50, 50, serie2009, colores, "2009");
    dibujarBarra(150, 50, serie2019, colores, "2019");

</script>
1 respuesta

aca:

escribirTexto( x, y - 10, "GRAFICO"); 

cambialo por

escribirTexto( x, y - 10, texto); 

y aca esto va dentro de while sino nunca va a variar el valor de i, va estar siempre en la posición cero

var altura = serie[i];

while te quedaria asi

 while (i < serie.length) {

            var altura = serie[i];
            dibujarRectangulo(x, y + sumaAltura, 50, altura, colores[i]);
            sumaAltura = sumaAltura + altura;

            i++;
}