Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Solucionado (ver solución)
Solucionado
(ver solución)
1
respuesta

Optimizando código de otro post

https://app.aluracursos.com/forum/topico-grafico-de-barras-con-texto-empresas-como-mejorarlo-110263

En ese post un compañero propuso su código y una compañera le hizo una mejora.

Acá comparto una mejora de mi parte.

Le agregué los porcentajes en la visualización de cada iteración para comprender lo graficado.

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

<style>
  canvas { border: 1px solid black; }
</style>

<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 empresas = ["Chrome", "Firefox", "Internet Explorer/Edge", "Safari", "Otros"];   
    var colores = ["blue","green","yellow", "red","gray"];

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

        escribirTexto(x, (y-10), texto);

        for (var pos = 0; pos < serie.length; pos++) {

            base = 50;
            altura = serie[pos] * 3.5; // la multiplicacion por 3.5 es para mejorar la visualizacion
            dibujarRectangulo(x, y, base, altura, colores[pos]);


            escribirTexto(x + 55, y + (altura/2), empresas[pos]); // "altura/2" es para mejorar la ubicacion del texto

            // la sig. linea esta para visualizar lo que pasa en cada iteracion
            document.write("<br>Iteracion: " + pos + " " + texto + " "  + empresas[pos] + " " + ":" + " " + colores[pos] + " " + ": " + serie[pos] + "%  <br><br>")

            // la sig. linea actualiza la siguiente posicion de        // empresa = empresas[posicion];
            y = y + (serie[pos] * 3.5); // idem altura
        }

    }

    dibujarBarra(50, 30, serie2009, colores, "2009", empresas);
    dibujarBarra(250, 30, serie2019, colores, "2019", empresas);

</script>
1 respuesta
solución!

Hola Horacio, espero que estés bien! ¡Muchas gracias por su contribución! ¡Para cualquier duda, estoy disponible! ¡Vamos juntos! ¡No desanimes! :)

Si este post te ayudó, por favor, marca como solucionado ✓.