Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
2
respuestas

Gráfico de Barras: una alternativa con While

Les comparto esta alternativa. No implementé la función "Escribir texto" porque la consigna decía que se va a profundizar en ella más adelante. Por lo pronto, les comparto esta pequeña solución que llevé a cabo con un ciclo While.

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

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

var serie2009 = [6, 47, 41, 3, 3];
var serie2019 = [81, 9, 3, 3, 4];

var colores = ["blue","green","yellow", "red","gray"];

function dibujarBarra(x, y, serie, colores, texto) {
    var i=0;
    var acc=50; 

    while(i<5){
        var altura = serie[i];
        var y = acc;           
        var color = colores[i];
        dibujarRectangulo(x,y,50,altura,color);
        acc = acc + altura;         
        i++;
    }
}      

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

< /script >

2 respuestas

Excelente, esta fue mi solución con el ciclo for:

function dibujarBarra(x,y,serie,color,texto){
                let pantalla = document.querySelector("canvas");
                let pincel = pantalla.getContext("2d");

                let inicio = y;
                for (let i = 0; i < color.length; i++) {
                    pincel.fillStyle = color[i];
                    pincel.fillRect(x, inicio, 50, serie[i]);
                    inicio = inicio + serie[i];

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

            } // Fin funcion dibujarBarra

            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");

Me resulto tu codigo. buena solucion