Página 1 de 1
Uso de gráficos
Publicado:
2006-07-24 14:41 @653
por purrutia
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
Publicado:
2006-07-24 16:22 @723
por explorer
¿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?
Publicado:
2006-07-24 16:37 @734
por explorer
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?
Publicado:
2006-07-25 19:39 @860
por purrutia
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
Publicado:
2006-07-25 21:10 @923
por explorer
Mira esto:
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;
Publicado:
2006-07-25 21:31 @938
por purrutia
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.....
Publicado:
2006-07-25 21:42 @946
por explorer
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.
Publicado:
2006-07-25 21:48 @950
por purrutia
MUCHAS GRACIAS........
Todo claro
Gracias de nuevo
Publicado:
2006-07-25 22:20 @972
por explorer
Si ves que GD::Graph se te queda corto, miro esto:
http://search.cpan.org/src/CHARTGRP/Cha ... tation.pdfpá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).
Publicado:
2006-07-28 15:35 @691
por purrutia
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