Jugando con GD::Graph


La idea no es hablar de Woopra, el servicio que uso para obtener estadísticas de uso del Blog, pero a partir de esa suscripción que tengo , extraje unos datos interesantes y curiosos para graficar con la API que dispuso Google , usando Google Chart :) usando el modulo GD::Graph en Perl

Las estadísticas son de fecha de ayer, es decir 01/10/2008, de las cuales extraje varias valores a modo de usar el modulo de Perl mencionado.

Usando GD::Graph::hbars es posible realizar barras en forma horizontal. He generado la siguiente imagen y despues muestro como lo realice :)






#!/usr/bin/perl -wT
# Cambiase a donde este la ubicación de Perl

##Acá he usado un servidor HTTP para obtener la imagen
use CGI ':standard';
use GD::Graph::hbars;
use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use strict;

## Data a graficar, en mi caso es las visitas al blog por país,por comodidad se usa un array.
my @data = (["España", "Mexico", "Venezuela", "Argentina","Colombia" ,"Peru", "Chile", "USA", "Desconocido",
"Rep Dominicana", "El Salvador", "Ecuador", "Costa Rica", "Brasil", "Noruega", "Rumania", "Turquia"],
[105, 84 , 76 ,37, 32 , 31, 22, 14, 11, 9, 7 , 5 , 4, 3, 2 , 1, 1 ]);
##Creando una grafica de 600x600 pixeles.
my $mygraph = GD::Graph::hbars->new(600, 600);
##Configurando las opciones de la gráfica

$mygraph->set(
title => 'Visitas al Blog por Pais Junio-Septiembre 2008',
x_label => 'Visitas/Hits',
y_label => 'Pais',
show_values => 1,
y_max_value => 110,
bar_spacing => 4,
dclrs => [ qw(green pink blue cyan) ]
) or warn $mygraph->error;


my $myimage = $mygraph->plot(\@data) or die $mygraph->error;

###Como comente arriba , al estas usando un HTTP server, debo de mostrar la imagen
### asi que mando un header al navegador para mostrar la imagen
print "Content-type: image/png\n\n";
print $myimage->png;


#####Fin de archivo

### Alternativamente si deseamos obtener la gráfica de forma de tenerla por separada en un
### archivo se puede usar estas lineas, claro descomentando xD
#open (IMG, '>imagen.png') or die "error";
#binmode IMG;
#print IMG $myimage->png;
#close IMG;




También es posible realizar las típicas tortas u "pie".


Esta gráfica se generó con este código.


#!/usr/bin/perl -wT
# Change above line to point to your perl binary

#use CGI ':standard';
use GD::Graph::pie;
#use CGI::Carp qw(warningsToBrowser fatalsToBrowser);
use strict;

# Both the arrays should same number of entries.
my @data = (["Espanol", "Desconocido", "Ingles", "Catalan","Noruego" ,"Turco"],
[222, 124, 71, 3, 1, 1]);

my $mygraph = GD::Graph::pie->new(500, 500);
$mygraph->set(
title => 'Lenguaje detectado en visitas al BLog',
label => 'prueba de label',
'3d' => 1,
suppress_angle => 5,
start_angle => 90,
) or warn $mygraph->error;

$mygraph->set_value_font(GD::gdMediumBoldFont);

my $myimage = $mygraph->plot(\@data) or die $mygraph->error;


#print "Content-type: image/png\n\n";

open (IMG, '>sta2.png') or die "error";
binmode IMG;
print IMG $myimage->png;
close IMG;




Hay más posibilidades en cuanto al tipo de gráficas como lineas, puntos, áreas, mezcladas, lineas de puntos y la posibilidad de hacer polígonos, eso sin nombrar la cantidad de material para leer acerca del tema.

0 comentarios:

Publicar un comentario