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