PDA

Ver la Versión Completa : Graficar ejes con una lista de datos escrita en tabla


bellecaro
25-08-2016, 16:01:06
Hola a todos, soy nueva en esto de Delphi :p, ya leí la guía de estilo y me parece muy interesante.

Estoy tratando de realizar una gráfica de puntos con ejes cartesianos, existe una tabla stringGrid que se llena con los datos tomados en un laboratorio y esos datos deben ser graficados luego de completar la tabla. El problema que tengo es que cuando pulso el boton de graficar lee los datos y los grafica pero no logro ubicar los ejes "x" y "y" para que se vean. Ya llevo dos días buscando y no lo encuentro, lo que he tratado de hacer es lo siguiente:

procedure TrazarEjesYpuntos;
var
i:integer;
x1,y1:real;
const
r=2;
begin
begin
WITH form1.image1.Canvas DO
begin
Pen.Color:=0;
MoveTo(H(minX),V(0));
LineTo(H(maxX),V(0));
MoveTo(H(0),V(minY));
LineTo(H(0),V(maxX));
for i:=1 to N do
begin
x1:=tabla[1,i];
y1:=tabla[2,i];
form1.image1.Canvas.Ellipse(H(x1)-r,V(y1)-r,H(x1)+r,V(y1)+r);
end;
end;
end;


function H(x:real):integer;
begin
H:=round(H0+x*EscX);
end;

function V(y:real):integer;
begin
V:=round(V0-y*EscY);
end;

procedure DetectarExtremos;
var i:integer;
begin
minX:=tabla[1,1];
miny:=tabla[2,1];
maxX:=tabla[1,1];
maxY:=tabla[2,1];
for i:=2 to N do
begin
if tabla[1,i]>maxX then maxX:=tabla[1,i];
if tabla[1,i]<minX then minX:=tabla[1,i];
if tabla[2,i]>maxY then maxY:=tabla[2,i];
if tabla[2,i]<minY then minY:=tabla[2,i];
end;
end;

procedure calcEscalas;
var
aux:real;
begin
aux:=maxX-minX;
maxX:=maxX+aux/10.0;
minX:=minX-aux/10.0;
EscX:=ancho/(maxX-minX);
H0:=-minX*EscX;
aux:=maxY-minY;
maxY:=maxY+aux/10.0;
minY:=minY-aux/10.0;
EscY:=alto/(maxX-minY);
V0:=alto+minY*EscY;
end;


con

ancho:=form1.image1.width;
alto:=form1.image1.height;

El ancho y alto por lo que veo es el tamaño que esta puesto en las propiedades de la imagen que son 353 y 472, por lo tanto si trato de dibujar los puntos (1,3),(2,2)y(3,1) no veo ejes, pero si dibujo los puntos (500,0); (300,200) y (0,200) si veo los ejes.

gracias por su ayuda

fjcg02
25-08-2016, 22:01:31
Hola,
Y en lugar de hacer el gráfico así a pelo, por qué no usas un tchart ?
Hace todo el trabajo sucio. Te llevará un par de horas aprender cómo funciona, pero cero que merecerá la pena.

Saludos

bellecaro
26-08-2016, 18:44:37
Hola,
Y en lugar de hacer el gráfico así a pelo, por qué no usas un tchart ?
Hace todo el trabajo sucio. Te llevará un par de horas aprender cómo funciona, pero cero que merecerá la pena.

Saludos

Gracias, voy a ver de que se trata, no tengo ni idea, pero suena bien. Voy a buscar en el foro.

bellecaro
26-08-2016, 19:45:57
Hola "fjcg2", gracias por tu ayuda, es cierto un par de horas y mejoro mucho mi programa... Sigo leyendo y aprendiendo,

Gracias

fjcg02
26-08-2016, 21:56:25
De nada, me alegro que te haya servido de ayuda.

Saludos