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

Grafico de barras [Mi recomendación]

Buenos días, excelente ejercicio. La verdad me abstuve de ver la solución varias veces, pero sabía que de todo lo que habíamos aprendido ahí está la solución. Animo a todos a que se tomen su tiempo.

Como experiencia primero realice un pseudocódigo porque no podía dar con la solución.

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

<script>
    function dibujarBarra (x, y, serie, colores, texto) {
        escribirTexto(x,y-10,texto);
        for (let i =0; i < serie.length; i++) {
            var altura = serie[i];
            var color = colores[i];
            dibujarRectangulo(x, y, 50, altura, color);
            y = y + altura;
        }                       
    }

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

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


</script>

Saludos a todos, lo mejor para lo que sigue.

2 respuestas

Igual a mi Camilo, estuve pensando largos ratos, tratando de no ver.. A prueba y error.. Al final salió. Hasta ahora fue el ejercicio que más me costó. Exitos!

Tienes razon, me tome algo de tiempo, pensarlo, es casi igual al tuyo, pero yo me complique mucho, a diferencia de ti, tu lo hiciste bastante simple.

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

    // dibujarRectangulo(300,200,60,120,"blue");
    // escribirTexto(300,160,"HELLO WORLD");

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

    function dibujarBarra(coords,base,serie,colors,title){
        serie.unshift(0);
        let index = 1;
        let accumulate = coords[1];
        for(;index < serie.length ;index++){
            accumulate += serie[index-1];
            dibujarRectangulo(coords[0],accumulate,base,serie[index],colors[index-1]);
        }
        dibujarRectangulo(coords[0],coords[1]+serie[index-1],base,serie[index],colors[index]);
        escribirTexto(coords[0],coords[1]-10,title);
    }
    dibujarBarra([300,200],60,serie2009,colores,"2009");
    dibujarBarra([360,200],60,serie2019,colores,"2019");

</script>

El resultado: Ingrese aquí la descripción de esta imagen para ayudar con la accesibilidadUn saludo, y sigamos aprendiendo y compartiendo lo que sabemos :)