¡Ya estamos en Twitter!

Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad

Crear barras de porcentajes

por Uriel Lizama

Introducción

Para mostrar resultados de estadística, encuestas, etc siempre resulta más sencillo comprender un simple gráfico a números. Es mas sencillo ver como ha votado la gente con unas barras que nos muestren el porcentaje que a un número.

Por esta razón he decidido hacer este pequeño tutorial que les mostrará a crear esas barras como campiones. ;-)

Creando el gráfico

Para empezar necesitamos nuestro gráfico. El gráfico debe de ser una imagen de 1x1 pixeles, y lo hacemos del color que nosotros querramos. Si quieren pueden usar el que yo use para este ejemplo:

http://perlenespanol.com/download/punto.gif

Creando el código

Lo primero que debemos de hacer es aprender a convertir a porcentajes nuestros resultados, durante todo el tutorial voy a usar como ejemplo un array con números que corresponden a la cantidad de visitas del día 1 al 7 de X mes.

my @resultado = ('120','123','240','50','178','202','145');

Ahora lo que debemos de hacer es sacar el número más alto de nuestro array, pues ese número va a corresponder al 100% de visitas. Entonces podemos hacer algo así:

my $numero_mayor;

for(sort {$b <=> $a} @resultado){
$numero_mayor = $_;
last;
}

Ya que tenemos nuestro número mayor como referencia ya lo que sigue es muy sencillo.

Creamos nuestras variables iniciales para crear nuestras barras:

#ANCHO DE NUESTRA BARRA
my $ancho = 5;

#LARGO MÍNIMO - Corresponde al largo que tendría la imagen en 0%
my $largo = 10;

#DRAMATISMO
my $dramatismo = 1.2;

Ahora si empezamos con nuestro código principal:

print "Content-type: text/html\n\n";

print "<font style=\"font-family:verdana,helvetica;color:black;font-size:8pt;\">\n";

for my $resultado(sort {$b <=> $a} @resultado){
my $porcentaje = int(($resultado/$numero_mayor)*100);
my $largo_i = $largo + ($porcentaje*$dramatismo);
print "<img src=\"punto.gif\" height=\"$ancho\" width=\"$largo_i\"> $resultado ($porcentaje\%)<br>\n";
}

print "<font>\n";
exit(1); #Salimos del programa con éxito

Es muy sencillo lo que hacemos, creamos un bucle a través de nuestro array, primero calculamos el porcentaje, después creamos la variable de él largo de nuestra imagen, que sacamos sumando el $largo inicia al producto de la multiplicación del porcentaje por el dramatismo, para de esta manera tener un largo aceptable, y finalmente imprimimos la imagen junto con los datos de el resultado.

Código Final

El código final quedaría de la siguiente manera:

#!/usr/bin/perl -w

use strict;

#ANCHO DE NUESTRA BARRA
my $ancho = 5;

#LARGO MÍNIMO
my $largo = 10;

#DRAMATISMO
my $dramatismo = 1.2;

#ARRAY CON RESULTADOS DE EJEMPLO
my @resultado = (102,123,240,50,178,202,145);


#AGARRAMOS EL NUMERO MAYOR DE NUESTRO ARRAY
my $numero_mayor;

for(sort {$b <=> $a} @resultado){
$numero_mayor = $_;
last;
}


#INICIO DE HTML
print "Content-type: text/html\n\n";

print "<font style=\"font-family:verdana,helvetica;color:black;font-size:8pt;\">\n";

for my $resultado(sort {$b <=> $a} @resultado){
my $porcentaje = int(($resultado/$numero_mayor)*100);
my $largo_i = $largo + ($porcentaje*$dramatismo);
print "<img src=\"punto.gif\" height=\"$ancho\" width=\"$largo_i\"> $resultado ($porcentaje\%)<br>\n";
}

print "<font>\n";
exit(1); #Salimos del programa con éxito


Notas Finales

Si aún no les queda muy claro como es que hice las barras, les recomiendo que chequen un poco el código, jueguen con las variables y con los resultados para que comprendan cómo esta hecho todo.

La fórmula para sacar los porcentajes es muy sencilla y va de la siguiente manera:

PORCENTAJE=(VALOR/VALOR MAYOR)*100


¿Quiéres más tutoriales como este? Escribir tutoriales toma una gran cantidad de tiempo y esfuerzo. Si este tutorial te ayudó a aprender o a solucionar algo, por favor considera dejar alguna donación en apoyo a Perl en Español.

Cliquea en el botón de abajo para dejar tu donación por medio de PayPal.

Comparte:
Categorías de Tutoriales:
En Nuestros Foros:

    Software error:

    List::Util object version 1.21 does not match bootstrap parameter 1.41 at /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/XSLoader.pm line 94.
    Compilation failed in require at /usr/lib64/perl5/5.8.8/x86_64-linux-thread-multi/Scalar/Util.pm line 11.
    Compilation failed in require at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/DateTime/Helpers.pm line 9.
    BEGIN failed--compilation aborted at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/DateTime/Helpers.pm line 9.
    Compilation failed in require at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/DateTime/Duration.pm line 11.
    BEGIN failed--compilation aborted at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/DateTime/Duration.pm line 11.
    Compilation failed in require at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/DateTime.pm line 43.
    BEGIN failed--compilation aborted at /usr/lib64/perl5/site_perl/5.8.8/x86_64-linux-thread-multi/DateTime.pm line 43.
    Compilation failed in require at /usr/lib/perl5/site_perl/5.8.8/DateTime/Format/Mail.pm line 7.
    BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.8/DateTime/Format/Mail.pm line 7.
    Compilation failed in require at /usr/lib/perl5/site_perl/5.8.8/XML/RSS/Private/Output/Base.pm line 9.
    BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.8/XML/RSS/Private/Output/Base.pm line 9.
    Compilation failed in require at /usr/lib/perl5/site_perl/5.8.8/XML/RSS.pm line 9.
    BEGIN failed--compilation aborted at /usr/lib/perl5/site_perl/5.8.8/XML/RSS.pm line 9.
    Compilation failed in require at forum_news.pl line 7.
    BEGIN failed--compilation aborted at forum_news.pl line 7.
    

    For help, please send mail to the webmaster (webmaster@perlenespanol.com), giving this error message and the time and date of the error.

  • Entra a los foros »
Socializa:
Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Perl en Español es mantenido con Movable Type
Todo el contenido de Perl en Español está bajo una licencia CC:
Creative Commons License