|
|
|||||||||||||||||||||||||||||||||||||||||||||||
|
IntroducciónHace poco me llego un email de una persona que tenia dudas acerca de como crear gráficos de barras, gráficas circulares, etc. Así que decidí crear este tutorial para que puedan hacer sus propios gráficos con perl. Preparando TodoPara este tutorial vamos a usar el módulo llamado GD::Graphs el cual pueden encontrar en CPAN: http://search.cpan.org/CPAN/authors/id/M/MV/MVERB/GDGraph-1.43.tar.gz También hice un zip con todos los archivos necesarios para poder usar el módulo. Todo lo que tienen que hacer es bajar el zip y extraer su contenido en el directorio de "/lib" en su perl. http://perlenespanol.baboonsoftware.com/pub/GD.zip Recuerden extraer todos los archivos usando el nombre de los directorios que ya vienen. Si no puedes extraer los archivos en tu distribución de perl, lee el tutorial acerca de como ejecutar módulos de perl sin tener que instalarlos. Si ya tienes todo listo, sigamos con el tutorial. Gráfica de BarrasComo primer ejemplo vamos a crear una gráfica de barras. Digamos que queremos hacer una gráfica de barras con el número de visitas que tiene "Perl en Español". Lo primero que necesitamos es llamar a los módulos necesarios:
use strict;
use CGI ':standard'; use GD::Graph::bars; Nota como usamos "GD::Graph::bars" pues queremos hacer una gráfica de barras. Ahora emepecemos con el código llenando nuestros campos: my @campos = ('Oct 2003','Nov 2003','Dec 2003','Ene 2004','Feb 2004');
Ahora vamos a hacer nuestro array con los valores. Los dos arrays deben de tener la misma cantidad de elementos, de lo contrario perl nos mostraría un error: my @valores = ('547','2282','2798','2354','4326');
Muy bien ya tenemos nuestros dos arrays ahora vamos a juntarlos en un array que va a contener los dos arrays y que más adelante le vamos a envíar el módulo: my @graf = (\@campos, \@valores);
Siempre deben de ir los nombres de los campos primero seguidos por los valores. Ahora lo que sigue es la linea con la que vamos a crear nuestra gráfica: my $grafico = GD::Graph::bars->new(500, 300);
Los valores dentro de "new()" son el ancho y el alto que queremos que tenga nuestro gráfico.
$grafico->set(
x_label => 'Mes', y_label => 'Visitas Totales', title => 'Visitas Mensuales de "Perl en Español"', ) or warn $grafico->error; Vemos como el "x_label" es el pequeño titulo que va a poner horizontalmente y el "y_label" es el que va a ir verticalmente. El valor de "title" es como dice su nombre el título de nuestra gráfica. my $imagen = $grafico->plot(\@graf) or die $grafico->error;
Muy bien ahora si creamos la imagen evíando la referencia a nuestro array de arrays que hicimos anteriormente. Ahora vien la hora de la verdad, el despliegue de nuestro gráfico:
print "Content-type: image/png\n\n";
print $imagen->png; exit(1); Noten como el "Content-type" tiene un valor de "image/png" lo que le dice al navegador que el contenido que sigue es el código de una imagen. Pueden ver aquí como quedaría este ejemplo. Código Final #!/usr/bin/perl -w use strict; my @campos = ('Oct 2003','Nov 2003','Dec 2003','Ene 2004','Feb 2004'); my $grafico = GD::Graph::bars->new(500, 300); $grafico->set( my $imagen = $grafico->plot(\@graf) or die $grafico->error; print "Content-type: image/png\n\n"; Gráficas CircularesMuy bien, ahora usando los mismos valores de el ejemplo anterior, vamos a crear una gráfica de barras. Lo primero que debemos de cambiar es la llamada al módulo de "GD::Graph" que debe de decir: use GD::Graph::pie;
Ahora el código que tenemos que cambiar también es:
my $grafico = GD::Graph::pie->new(320, 300);
$grafico->set( title => 'Visitas Mensuales de "Perl en Español"', '3d' => 1, ) or warn $grafico->error; Como es lógico la variable "title" es el título de nuestra gráfica, el valor "3d" es si queremos que nuestra gráfica tenga un efecto de 3d. Ese es todo el código que debemos de cambiar. Pueden ver aquí como quedaría este ejemplo. Código Final #!/usr/bin/perl -w use strict;
my $grafico = GD::Graph::pie->new(320, 300); $grafico->set( my $imagen = $grafico->plot(\@graf) or die $grafico->error; print "Content-type: image/png\n\n"; Gráfica de ÁreaAhora veamos como hacer un gráfico de área, este gráfico es como una linea que tiene un área por debajo(?), mejor veamos el ejemplo. Como ya sabemos primero hay que editar la llamada al módulo: use GD::Graph::area;
Ahora el constructor de nuestro gráfico va a ser de la siguiente manera:
my $grafico = GD::Graph::area->new(500, 300);
$grafico->set( x_label => 'Mes', y_label => 'Número de Visitas', title => 'Visitas Mensuales de "Perl en Español"', ) or warn $grafico->error; No tiene caso que explique todas las variables de nuevo pues son iguales a las del primer ejemplo. Pueden ver aquí como quedaría este ejemplo. Código Final #!/usr/bin/perl -w use strict;
my $grafico = GD::Graph::area->new(500, 300); $grafico->set( my $imagen = $grafico->plot(\@graf) or die $grafico->error; print "Content-type: image/png\n\n"; Desplegando el gráficoDesplegar el gráfico en nuestra página de HTML es sumamente sencillo, sólo basta con incluir la siguiente linea tal y como lo harías con un gráfico: <img src="http://perlenespanol.baboonsoftware.com/cgi-bin/pub/tutGD/area.cgi" alt="Visitas Mensuales">
Claro que debes de cambiar el URL a tu CGI. Opciones ExtraAparte de las propiedades que usamos anteriormente en las gráficas como "title","x_label","y_label", etc. Hay muchas propiedades más que podemos usar y aquí va una lista de algunas de ellas:
Todas estas propiedades se pueden incluir tal y como lo hice en los ejemplos con el "title","x_label","y_label", etc. ¿Problemas con tu instalación?Si tienes problemas al instalar el módulo GD y GD::Graph, entra a la siguiente liga dentro del foro del sitio donde podrás encontrar una solución a tu problema: http://perlenespanol.baboonsoftware.com/foro/viewtopic.php?t=284
|
||||||||||||||||||||||||||||||||||||||||||||||
|
|||||||||||||||||||||||||||||||||||||||||||||||