Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 

Uso de gráficos

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio
Mensaje Lun Jul 24, 2006 1:41 pm
purrutia
Perlero Nuevo
Perlero Nuevo
Registrado: 24 Jul 2006
Mensajes: 16
Uso de gráficos Responder citando

He leido los tutoriales sobre gráficos de la página y de CPAN (los de GDGraph) y no he encontrado lo que solucione mi problema. Deseo crear un gráfico donde los datos del eje X no se encuentren equiespaciados, sino que los datos correspondan a puntos reales, es decir que el eje X sea numérico. He probado colocando x_tick_number => 'auto'. Pero no es una muy buena solución. Existe algun módulo que permita hacer gráficos con el eje X numérico?

Gracias
Mensaje Lun Jul 24, 2006 3:22 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4212
Ubicación: Valladolid, España
Responder citando

¿A qué te refieres con lo que no es muy buena solución? ¿Has probado a darle a x_tick_number un número igual al de datos en el eje X?
Mensaje Lun Jul 24, 2006 3:37 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4212
Ubicación: Valladolid, España
Responder citando

Según he podido ver en el código, el truco está en la rutina create_x_labels.

Lo de la opción 'auto' no la he visto por ningún lado... Hay una serie de controles con respecto a x_tick_number, pero todos ellos requieren de alguna manera haber inicializado antes x_min_value y x_max_value, x_max y x_min. Y se debe cumplir las dos siguientes condiciones: el número de puntos ha de ser superior a dos y no ha de coincidir x_max con x_min.

¿Puedes poner un ejemplo de los datos que quieres usar?
Mensaje Mar Jul 25, 2006 6:39 pm
purrutia
Perlero Nuevo
Perlero Nuevo
Registrado: 24 Jul 2006
Mensajes: 16
Responder citando

quise probar con datos como por ejemplo:

y1=534, x1=3
y2=2354,x2=5
y3=2876,x3=7
y4=2978,x4=32

en realidad el valor de los y no me importa mucho, pero me importa que se aprecie que los primeros datos estaban comprimidos en los primeros x, y que el último dato es mucho más lejano, pero ma aparecian todos equiespaciados, quizá no lo estoy haciendo bien, la verdad es que recién empecé a probar con los gráficos, y no he logrado solucionar esto.

Agradecere cualquier ayuda

Saludos
Mensaje Mar Jul 25, 2006 8:10 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4212
Ubicación: Valladolid, España
Responder citando

Mira esto:


Lo he hecho con este código:
Código:
#!/usr/bin/perl
use GD::Graph::points;

@data = (
    [ 3, 5, 7, 32, ],
    [  534,  2354,  2876, 2978, ],
  );

my $graph = GD::Graph::points->new(400, 300);
$graph->set(
    x_label           => 'Valores X',
    y_label           => 'Valores Y',
    title             => 'Estadísticas',
    x_min_value       => 0,
    x_max_value       => 40,
    y_min_value       => 500,
    y_max_value       => 3000,
    x_tick_number     => 8,
    y_tick_number     => 8,
#   y_plot_values     => 0,
    x_label_skip      => 1,
    y_label_skip      => 1,
    show_values       => 1,
    box_axis          => 0,
    markers           => [4],
) or die $graph->error;

my $gd = $graph->plot(\@data) or die $graph->error;

open(IMG, '>file.png') or die $!;
binmode IMG;
print IMG $gd->png;


Ultima edición por explorer el Mar Jul 25, 2006 8:44 pm, editado 1 vez
Mensaje Mar Jul 25, 2006 8:31 pm
purrutia
Perlero Nuevo
Perlero Nuevo
Registrado: 24 Jul 2006
Mensajes: 16
Responder citando

Ah, si, queda muy bien...

Muchas gracias...

Por último, unas preguntas:

me puedes explicar que significan los parámetros _label_skip y tick_number... al parecer no entendí bien que significaban y ahi esta la clave de todo...


GRACIAS.....
Mensaje Mar Jul 25, 2006 8:42 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4212
Ubicación: Valladolid, España
Responder citando

Los label_skip quieren decir que cada cuantas etiquetas al lado de cada marca en los ejes debe pintarse. Si se pone a 1, quiere decir que tienen que pintar todos los valores.

Y tick_number, el número de marcas.

Lo que no he encontrado es la manera de pintar las marcas bajo exáctamente los valores, pero me parece que eso no es posible.
Mensaje Mar Jul 25, 2006 8:48 pm
purrutia
Perlero Nuevo
Perlero Nuevo
Registrado: 24 Jul 2006
Mensajes: 16
Responder citando

MUCHAS GRACIAS........


Todo claro


Gracias de nuevo
Mensaje Mar Jul 25, 2006 9:20 pm
explorer
Moderador
Moderador
Registrado: 24 Jul 2005
Mensajes: 4212
Ubicación: Valladolid, España
Responder citando

Si ves que GD::Graph se te queda corto, miro esto:
http://search.cpan.org/src/CHARTGRP/Chart-2.4.1/Documentation.pdf
página 37.

Es la documentación de Chart.
Otro módulo que considerar: Char::Plot, que sí permite personalizar la posición de los ticks.
Y también Image::Magick::Chart (quizás demasiados parámetros), Chart::Graph::Gnuplot (complicado de manejar) o Imager::Graph (le faltan cosas).
Mensaje Vie Jul 28, 2006 2:35 pm
purrutia
Perlero Nuevo
Perlero Nuevo
Registrado: 24 Jul 2006
Mensajes: 16
Responder citando

WoW, te pasaste. Simpre me ha gustado programar, pero siempre encontraba la falencia que para poder hacer gráfico fácil tenia que guardar datos a un archivo y ocupar un programa como excel o matlab (u ocupar puramente matlab). Pero ahora que me diste estos datos, me pongo de cabeza a leer la documentación

Gracias de nuevo Smile
Publicar nuevo tema   Responder al tema    Foros de discusión -> Intermedio Todas las horas son GMT - 6 Horas
Página 1 de 1



Powered by phpBB © 2001, 2005 phpBB Group