• Publicidad

Uso de gráficos

¿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.

Uso de gráficos

Notapor purrutia » 2006-07-24 14:41 @653

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
purrutia
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 16
Registrado: 2006-07-24 14:32 @647

Publicidad

Notapor explorer » 2006-07-24 16:22 @723

¿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?
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 11665
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor explorer » 2006-07-24 16:37 @734

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?
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 11665
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor purrutia » 2006-07-25 19:39 @860

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
purrutia
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 16
Registrado: 2006-07-24 14:32 @647

Notapor explorer » 2006-07-25 21:10 @923

Mira esto:
Imagen

Lo he hecho con este código:
Código: Seleccionar todo
#!/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;
Última edición por explorer el 2006-07-25 21:44 @947, editado 1 vez en total
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 11665
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor purrutia » 2006-07-25 21:31 @938

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.....
purrutia
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 16
Registrado: 2006-07-24 14:32 @647

Notapor explorer » 2006-07-25 21:42 @946

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.
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 11665
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor purrutia » 2006-07-25 21:48 @950

MUCHAS GRACIAS........


Todo claro


Gracias de nuevo
purrutia
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 16
Registrado: 2006-07-24 14:32 @647

Notapor explorer » 2006-07-25 22:20 @972

Si ves que GD::Graph se te queda corto, miro esto:
http://search.cpan.org/src/CHARTGRP/Cha ... tation.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).
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 11665
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor purrutia » 2006-07-28 15:35 @691

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 :)
purrutia
Perlero Nuevo
Perlero Nuevo
 
Mensajes: 16
Registrado: 2006-07-24 14:32 @647


Volver a Intermedio

¿Quién está conectado?

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

cron