• Publicidad

Crear gráficos con Perl

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Crear gráficos con Perl

Notapor sigar » 2006-07-18 14:25 @642

Hola,

Mi compañera y yo venimos leyendo diversa información de este foro y aún no nos queda claro.

Decidimos seguir este tutorial http://perlenespanol.com/archives-tut/000066.html

Creando gráfico de Barras:
Código: Seleccionar todo
#!/usr/bin/perl -w

use strict;
use CGI ':standard';
use GD::Graph::bars;

my @campos = ('Mar 2006','Abr 2006','May 2006', 'Jun 2006', 'Jul 2006');
my @valores = ('547','2282','2798','2354','4326');
my @graf = (\@campos, \@valores);

my $grafico = GD::Graph::bars->new(500, 300);

$grafico->set(
x_label => 'Mes',
y_label => 'Visitas Totales',
title => 'Visitas Mensuales',
) or warn $grafico->error;

my $imagen = $grafico->plot(\@graf) or die $grafico->error;

print "Content-type: image/png\n\n";
print $imagen->png;
exit(1);


Y el código en la sección "Desplegar el Gráfico" en nuestro archivo HTML:
<img src="/area.cgi" alt="Visitas Mensuales">

Pero al momento de visualizar nuestro index.html en el explorador, no sale.

P.D. Ya tenemos instalador el paquete GDGraphs.

Agradecemos cualquier ayuda al respecto. Saludos.
Avatar de Usuario
sigar
Perlero nuevo
Perlero nuevo
 
Mensajes: 31
Registrado: 2006-07-07 10:59 @499
Ubicación: Peru

Publicidad

Notapor explorer » 2006-07-18 15:02 @668

¿Es correcta la forma /area.cgi de ejecutar un cgi en vuestro servidor web?
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor sigar » 2006-07-18 15:16 @678

explorer escribiste:¿Es correcta la forma /area.cgi de ejecutar un cgi en vuestro servidor web?


bueno, segun el tutorial insertamos el grafico de barras con img src= ,el archivo cgi, hemos intentado tambien haciendo un

perl grafico.pl > imagen.png

para generar una imagen.png pero esta vacia... y no muestra nada cuando le damos un <img src= "/imagen.png"> en el index.html. :?
Avatar de Usuario
sigar
Perlero nuevo
Perlero nuevo
 
Mensajes: 31
Registrado: 2006-07-07 10:59 @499
Ubicación: Peru

Notapor explorer » 2006-07-18 15:37 @692

Vamos a ver... según lo estáis usando, como si fuera un cgi, quiere decir que debe existir un programa que haga las funciones de servidor web. No vale con crear una página web y verla en el navegador. Hay que subirla al servidor web, junto con el cgi, para que al pedirle con el navegador que nos la muestre, ejecute el cgi.

Si sólo queréis generar el gráfico, no os hace falta que sea un cgi, ni meter un img en ninguna página web.

Simplemente, generar el gráfico:
Código: Seleccionar todo
#!/usr/bin/perl -w

use GD::Graph::bars;
use strict;

my @campos  = ('Mar 2006','Abr 2006','May 2006', 'Jun 2006', 'Jul 2006');
my @valores = (547, 2282, 2798, 2354, 4326);
my @graf    = (\@campos, \@valores);
my $grafico = GD::Graph::bars->new(500, 300);

$grafico->set(
  x_label => 'Mes',
  y_label => 'Visitas Totales',
  title   => 'Visitas Mensuales',
) or warn $grafico->error;

open   (IMG, '>grafico.png') or die $!;    # Abrimos el fichero destino
binmode IMG;
print   IMG $grafico->plot(\@graf)->png;
close   IMG;

Más información: GD::Graph
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor explorer » 2006-07-18 15:39 @694

Lo que habéis intentado de de ejecutarlo de forma directa, con el '>' en la línea de comandos, es muy posible que el error lo provoque la línea en el programa que pinta el Content-Type. Si la quitáis, seguro que también funciona.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor sigar » 2006-07-18 16:28 @727

Gracias por responder,

En si nuestro proposito es practica para generar graficos con perl, mediante consultas... y escogimos este codigo como estudio previo.

Hicimos el cambio que nos dijiste, pero aun asi, no muestra la pagina, y es que cuando damos

perl barras.pl

(para correr el archivo) sale

Can't locate GD/Graphs/bars.pm in @INC /usr/lib/perl5/ ....

Pero el archivo si se encuentra ahi :S

y aun cuando damos perl barras.pl> grafico.png el grafico resulta vacio...



:(
Avatar de Usuario
sigar
Perlero nuevo
Perlero nuevo
 
Mensajes: 31
Registrado: 2006-07-07 10:59 @499
Ubicación: Peru

Notapor explorer » 2006-07-18 16:41 @737

El error está claro: el programa no encuentra el módulo GD::Graphs. Está mal instalado.

Dependiendo del sistema operativo, tenéis que utilizar un gestor de paquetes (Debian, Red-hat, Suse, etc), o ver si tenéis instalado el comando cpan en vuestro linux; o si estáis en windows, con ppm.

Lo que dice es que no encuentra el fichero bars.pm en ninguno de los directorios de @INC. Si lo habéis bajado a vuestro directorio, tenéis que agregar a @INC ese directorio. Algo así como: use lib '/Directorio/de/instalacion/de/mi/Perl'; delante del use GD....

En el tutorial que habéis leído se hace referencia a precisamente eso, en otro tutorial:
http://perlenespanol.com/archives-tut/000061.html#more
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor sigar » 2006-07-18 17:13 @759

Nuestra libreria GD si se encuentra en esa direccion

/usr/lib/perl5/Graph/bars.pm , pero al correr perl barras.pl no lo ubica.

estamos usando RedHat9 y al instalar el paquete GDGraph-1.43.tar.gz lo instalamos como:

tar xvzf GDGraph-1.43.tar.gz , no se si tal vez se deba a los permisos que le dimos al instalarlo ....

Hemos agregado la linea de declaracion de la libreria, y quedo asi:

use strict;
use lib ('perl5/GD');
use GD::Graph::bars;

pero sale el mismo error...
Avatar de Usuario
sigar
Perlero nuevo
Perlero nuevo
 
Mensajes: 31
Registrado: 2006-07-07 10:59 @499
Ubicación: Peru

Notapor explorer » 2006-07-19 04:46 @240

Debería estar en /usr/lib/perl5/GD/Graph/bars.pm (falta GD). Y el use lib está mal, ya que no es un camino completo.

Yo creo que en Red-Hat 9 debería estar funcionando el comando cpan, para hacer la instalación más cómoda que bajando el fichero tar.gz.

Esto de la instalación es particularmente importante porque la librería GD necesita que estas otras librerías estén instaladas:
Código: Seleccionar todo
use GD;
use GD::Text::Align;
use GD::Graph::Data;
use GD::Graph::Error;


Os recomiendo que hagais mejor el siguiente experimento: Os ponéis como root del sistema y ejecutáis la orden cpan GD::Graph. Seguís las indicaciones de la instalación primera y luego instalará todas las librerías de las que depende.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 10 invitados