• Publicidad

Desplegar gráfico en Perl

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Desplegar gráfico en Perl

Notapor Ricsato » 2010-10-01 20:25 @892

Buenas tardes a todos, soy un principiante en este mundo interesante de Perl y deseo saber cómo desplegar el gráfico que viene como ejemplo en el tutorial de la página que tiene como título: "Creando gráficos con Perl". Copié el ejemplo tal y como está, bajé la librería de gráficos y la instalé en la carpeta que indican, pero al ejecutar el programa en el modo MSDOS, me despliega pura basura. ¿Qué estaré haciendo mal? ¿Se debe de ejecutar en alguna plataforma gráfica? ¿No es para correr en DOS? ¿Tiene que ver con la resolución de mi monitor? Porque sí ejecuta el script pero muestra puros caracteres raros.

Saludos.
Ricardo
Ricsato
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2010-10-01 20:08 @880

Publicidad

Re: Desplegar gráfico en Perl

Notapor explorer » 2010-10-01 21:05 @920

Bienvenido a los foros de Perl en Español, Ricsato.

El tutorial hace referencia a la creación y presentación del gráfico, pero en entorno web.

Me explico: el programa debe ser ejecutado desde un servidor web por petición de un usuario, a través del uso de un navegador web. Se ve esto porque el programa incorpora el módulo CGI.

Si tuvieras que imitar este proceso en tu propio ordenador, deberías tener instalado un servidor web, meter el programa en una carpeta especial, arrancar un navegador web, y escribir una dirección especial en la barra de direcciones.

El navegador web mandará tu petición al servidor web, que arrancará tu programa, que generará el gráfico, y que el servidor web lo mandará a tu navegador, y éste, al fin, será el que te presente el gráfico.

Bueno, un camino muy largo para ver un gráfico, pero así es como funciona esto de Internet :)

Pero... si sólo quieres que el programa genere un gráfico, y que lo guarde en disco, para luego verlo con cualquier visor de gráficos, te vale con hacer unas pequeñas modificaciones al programa: quitar el módulo CGI y sustituir la línea de print() del "Content..." por una instrucción
binmode STDOUT;

El resultado será el gráfico, en formato png, que saldrá directamente en pantalla, pero también, como dices, en forma de basura. No es basura: lo que estás viendo son los datos binarios que forman el fichero del gráfico.

Lo que debes hacer es "capturar" ese flujo binario y guardarlo en disco:

perl programa_grafico.pl > dibujo.png

desde la línea de comandos. Fíjate que le estamos diciendo que toda la salida del programa la guarde en un fichero llamado dibujo.png. Luego queda que ese gráfico lo veas con el navegador de ficheros de tu sistema gráfico o con un programa de dibujo o incluso el mismo navegador web.

Si no quieres hacer esa captura desde la línea de comandos, también puedes guardar el gráfico desde el mismo programa (sacado de http://cpansearch.perl.org/src/BWARFIELD/GDGraph-1.44/samples/save.pl), cambiando las últimas líneas del programa por:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
        open(OUT, ">dibujo.png") or die "No puedo escribir en dibujo.png: $!";
        binmode OUT;
        print OUT $imagen->png;
        close OUT;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4

que ves que hacemos los pasos: abrir fichero "dibujo.png" en escritura, indicar que la salida será en binario puro, imprimimos el gráfico en el fichero, y cerramos la grabación. El resultado debería ser el mismo: un fichero en tu directorio con ese nombre, que podrás ver de la forma indicada antes.
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

Re: Desplegar gráfico en Perl

Notapor panterozo » 2010-10-01 23:54 @037

Bienvenido Ricsato...

Por mi parte, deseo dibujar un gráfico (círculos, líneas, etc, quizás en otra ventana) mientras se esté ejecutando el programa, de forma a como lo hace Text::ASCIITable.

Algo sencillo, pero que cumpla con mis requerimientos.

He estado buscando en CPAN, e instalé Imager, pero éste dibuja a un archivo, por lo que he podido apreciar en Imager::Tutorial.

Ricsato, creo que lo que necesitas es el módulo Imager.

Explorer, ¿sabes de algún módulo que me permita dibujar gráficos tipo ASCII, o algo por el estilo?


Thanks
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400

Re: Desplegar gráfico en Perl

Notapor explorer » 2010-10-02 05:11 @258

Aparte de Text::ASCIITable:
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
  .------------------------------.
  |            Basket            |
  +----+-----------------+-------+
  | Id | Name            | Price |
  +----+-----------------+-------+
  |  1 | Dummy product 1 |  24.4 |
  |  2 | Dummy product 2 |  21.2 |
  |  3 | Dummy product 3 |  12.3 |
  +----+-----------------+-------+
  |    | Total           |  57.9 |
  '----+-----------------+-------'
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
está Text::Flowchart
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
 +-------+      +-------------+
 | BEGIN >---+  |             |                    
 +-------+   +--> Do you need |                    
                | to make a   N------+            
       +--------Y flowchart?  |      |            
       |        |             |      |            
       |        +-------------+      |            
       |                             |            
       |         +------------+      |            
       |         |            |      |            
 +-----V-------+ | So use it. |      |            
 |             | |            |      |            
 | Then my     | +--^---V-----+      |            
 | module may  |    |   |            |            
 | help.       |    |   |            |            
 |             >----+   |            |            
 +-------------+        |            |              
                        |      +-----V-------+    
                        |      |             |    
                        |      | Then go do  |    
                        +------> something   |    
                               | else.       |    
                               |             |    
                               +-------------+
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Graph::Easy
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
        +------+     +--------+
        | Bonn | --> | Berlin |
        +------+     +--------+
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
Tree::Visualize
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
                   +---+                
          +--------| * |-------+        
          |        +---+       |        
        +---+                +---+      
     +--| + |--+          +--| + |--+    
     |  +---+  |          |  +---+  |    
   +---+     +---+      +---+     +---+  
   | 2 |     | 2 |      | 4 |     | 5 |  
   +---+     +---+      +---+     +---+
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4
De forma interactiva, con App::Guiio
Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
             .---.  .---. .---.  .---.    .---.  .---.
    OS API   '---'  '---' '---'  '---'    '---'  '---'
               |      |     |      |        |      |
               v      v     |      v        |      v
             .------------. | .-----------. |  .-----.
             | Filesystem | | | Scheduler | |  | MMU |
             '------------' | '-----------' |  '-----'
                    |       |      |        |
                    v       |      |        v
                 .----.     |      |    .---------.
                 | IO |<----'      |    | Network |
                 '----'            |    '---------'
                    |              |         |
                    v              v         v
             .---------------------------------------.
             |                  HAL                  |
             '---------------------------------------'
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4

y alguno más... pero no conozco ninguno para dibujar círculos y líneas.
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

Re: Desplegar gráfico en Perl

Notapor panterozo » 2010-10-02 21:52 @953

explorer escribiste:y alguno más... pero no conozco ninguno para dibujar círculos y líneas.


Están muy bien :D

muchas gracias :D
panterozo
Perlero nuevo
Perlero nuevo
 
Mensajes: 160
Registrado: 2010-01-26 08:36 @400


Volver a Básico

¿Quién está conectado?

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