Академический Документы
Профессиональный Документы
Культура Документы
Autor:
Generacin de grficos con TeeChart Lo que estamos denominando grfico sera el Chart completo, su apariencia general, cmo van a funcionar las coordenadas, qu valores pueden tomar y en qu tipo escalas, cmo ser el panel, distribucin de pginas, zoom, etc., y cmo no, se consigue a travs de las opciones de la pestaa Chart. Pero dentro de ese grfico podemos optar desde lo ms simple, que es una serie nica, a representar la misma con distintas formas, como pueden ser lneas y barras superpuestas, o escalas y valores diferentes en el mismo panel, porque as nos interese para estudios comparativos, por ejemplo. Para ello debemos optar por elegir desde el color de cada una, hasta la fuente de datos, pasando por el resaltado de los puntos de inflexin y la representacin de sus valores con las mscaras correspondientes, y ello, como el resto de las opciones, a travs de la pestaa Series. Ya tenemos la edicin dividida en sus dos bases, la totalidad y la parte.
Fcil no? Le hemos dado las coordenadas de los primeros cinco puntos que se nos han ocurrido a una serie del tipo lneas, previamente creada, y simplemente los ha unido como era su obligacin. Si ahora ejecutamos y pulsamos el botn se mostrarn estos puntos dentro del panel. La segunda opcin con la que nos encontramos es General y realmente es simple. Tan solo destacar cuatro aspectos de importancia, de los cuales dos ya se han mencionado como opciones independientes del men contextual, y que, como todo, podremos hacerlos funcionar igualmente desde cdigo: la posibilidad de previsualizar, (Print Preview), la exportacin a otros ficheros, la activacin del zoom y la de movimiento. Si tenemos activada la opcin Allow Zoom, en ejecucin y con el botn principal podemos trazar una cuadrcula que ser la que se visualice en el panel. Si pulsamos cualquiera de los botones de Allow Scroll, salvo el que especifica que no haya movimiento, le estaremos indicando cmo queremos que se desplace la imagen utilizando posteriormente el botn derecho. El desplazamiento de la imagen (Scroll) en el panel puede servir, llevado a cdigo, para efectos muy interesantes en determinados tipos de grficos. Suponiendo, por ejemplo, una serie de lneas y creando un movimiento horizontal automtico, podramos conseguir La opcin Axis, es decir, la utilizacin de los ejes, es a mi parecer el efecto de cualquier pantalla una de las ms importantes y complicadas. De ella va a depender del tipo sismograma, el funcionamiento general del grfico, pues aqu ser donde le vamos a decir cmo se han de comportar los elementos que creemos. encefalograma, etc. Una Serie con idnticos valores vara por completo si manipulamos La opcin Axis, es decir, la utilizacin de los ejes, es a mi su representacin en relacin a las coordenadas. parecer una de las m s
Generacin de grficos con TeeChart importantes y complicadas. De ella va a depender el funcionamiento general del grfico, pues aqu ser donde le vamos a decir cmo se han de comportar los elementos que creemos. Una serie con idnticos valores vara por completo si manipulamos su representacin en relacin a las coordenadas. El ejemplo que hemos realizado, no tendra sentido si ahora le definimos unos valores mximos y mnimos a los ejes que estn por encima o por debajo de los puntos elegidos, por poner el ejemplo ms evidente, ya que nos encontraramos con un panel en blanco. De la cantidad de posibilidades que nos ofrece, en la mayora de los casos su utilidad es muy evidente o intuitiva como para detallarlas, por lo que vamos a dar un repaso sin entrar a mencionar ms que lo que pueda resultar confuso. Con independencia de la opcin de mostrar o no los ejes (Show Axis), que no hay que confundir con visualizar o no el panel, el resto est supeditado a lo que le indiquemos dependiendo de lo que tengamos pulsado, ya sea izquierda, derecha, arriba, abajo y fondo. Aunque en esencia el funcionamiento de todos ellos es el mismo, se pueden realizar combinaciones interesantes. En principio tomemos cualquiera de ellos como ejemplo, supongamos activa la izquierda del gr fico (left) cuyos resultados, si no superponemos series, no tendr sobre la figura final ninguna diferencia a la eleccin de la zona derecha (Right) pues estamos trabajando el mismo eje, tan solo diferir por el lugar de visualizacin de los valores correspondientes. En este momento vamos a continuar con el panel derecho de la misma pantalla, como se ve en la figura 3. Las escalas ( Scales) van a fijar la visualizacin de los valores mximo y mnimo, as como los intervalos entre ellos. Influir el tipo de datos con el que trabajemos, no podemos considerar de la misma forma valores absolutos que porcentuales o de fecha, pero no vamos a considerar esto por ahora. Por defecto todo es automtico, y Figura 3 el incremento (Desired Increment) cero indica lo mismo. En el ejemplo en que hemos introducido la funcin Addxy fijbamos unos valores de X que oscilaban entre 10 y 26, as como sus correspondientes de Y entre 15 y 52. El resultado pues es obvio, el origen de coordenadas ser el punto 10,15 y los valores que se reflejen as como el dibujo de la lnea terminarn en el 26,52, con qu incremento?, le hemos especificado cero, as que considerar las diferencias entre los valores mximos y mnimos y har un ajuste automtico. Si este es el resultado que buscamos, perfecto. Pero somos muy libres de considerar que no tenemos un eje de coordenadas cuyo punto de origen sea el tradicional 0,0 y necesitamos ese punto, es habitual, siempre que se utilicen grficas comparativas, que cumplan unas caractersticas iguales, y no se parecer a nivel visual en nada una curva si el origen es distinto, l os resultados no son comparativos y normalmente el uso de los grficos, especialmente en gestin, es este. Bueno, pues busquemos ese punto deshaciendo el automatismo. En ese momento se activa la posibilidad de utilizar los valores que indiquemos como mximos y mnimos, o dejar automtico uno, o ambos. Queremos que nuestro origen sea el punto cero, y recordemos que tenemos activada la opcin
Generacin de grficos con TeeChart izquierda, por lo tanto estamos dando valores al eje de las X. Fijamos el mnimo en cero y el mximo?, pues dependiendo de lo que interese y lo que estemos realizando podemos fijarlo nosotros o que lo haga el propio TeeChart pulsndole como automtico. Si desconociendo cual es el valor mas alto que se puede dar en un grfico, lo especificamos, la figura se va a atener a esos valores, o bien quedar ridculamente pequea o bien se saldr del panel. No obstante, y para el caso en que se precisen grficos comparativos, como antes decamos, puede ser necesario, dejmoslo as por ahora, con un mnimo de cero y un mximo indefinido, que coincidir con el valor mas alto posible que le enviemos. Hemos fijado uno de los ejes, nos faltara el otro, por lo tanto hacemos la misma operacin pero ahora tomando, por ejemplo, la opcin abajo (bottom) , y conseguiramos el mas estndar de los grficos. Tan solo nos queda considerar en este aspecto el incremento a utilizar, y esto puede ser muy importante a la hora de la precisin. Con el ejemplo que hemos puesto anteriormente no es significativo, pero si debemos representar un nmero alto de valores, por ejemplo, el resultado de una ecuacin que va tomando valores a partir de un bucle que se incrementa de uno en uno, es ilgico marcar un incremento alto en el grfico, ms coherente ser acoplar ambos. Las dos opciones que nos faltan de este panel es, que los valores sean invertidos, es decir, que el punto cero no sea el origen de coordenadas sino el extremo del eje, y la posibilidad de escalar de forma logartmica, es decir, que en lugar de trabajar con la normal o aritmtica, en que la distancia entre intervalos iguales es la misma, se puede utilizar de manera que esas longitudes sean proporcionales a su logaritmo, lo que es una forma de trabajo tpico de clculos de mayor precisin como las curvas utilizadas en estudios geolgicos y similares. El resto de las opciones son simples. La pestaa Ttulo (Title) permite etiquetar cada eje, el denominar a qu corresponden los valores que se indican, por ejemplo, millones de pesetas en relacin con los meses. En este caso, pulsando la opcin izquierda escribiremos el literal millones de pesetas, y abajo (bottom) pues, como es lgico, meses. Lo que no nos sera posible es escribir un ttulo de eje si no existen valores en el mismo. Se puede apreciar, que segn se pulse una opcin de posicionamiento, el ngulo va modificndose, izquierda a 90, derecha a 270 y 0 en las superior e inferior, que es la inclinacin correcta del texto, si no se selecciona otra. Las opciones siguientes de Labels, Ticks y Position dan lugar a modificaciones en cuanto a grosores de los ejes, visualizacin o no de valores, formatos, etc. que son fcilmente deducibles, por lo que no vale la pena detallarlos aqu. Tan solo comentar al respecto, que es muy simple ver el resultado de cada uno de ellos, pues modifican el grfico de prueba segn se pulsan. Podemos encontrarnos ante situaciones en las cuales no parece que exista ninguna reaccin grfica tras activar una opcin. Una de las cosas ms normales en estos casos es que en realidad no se produzca, ya que todas posibilidades estn activas con independencia del tipo de grfica que se est utilizando, cuando es evidente, que las posibilidades que con las que contamos en un grfico de Gantt pueden diferir en mucho con las que corresponden a uno de lneas o de tarta.
Generacin de grficos con TeeChart porcentuales, lo no quiere decir que se modifique el valor, pues es tan solo a nivel visual, y la segunda la de considerar, exclusivamente los del eje X. En cuanto a la opcin Panel es interesante a nivel de aspecto pero, como las anteriores, su manejo es muy intuitivo. Permite realzar o hundir, cambiar el color, tanto del propio panel como de sus bordes en colores planos o degradados, y una opcin que puede resultar interesante o curiosa, la de incluir una imagen de fondo (Back Image) y de diferentes maneras, por ejemplo el logotipo de la empresa, bien en la totalidad del panel o ceida a los ejes de coordenadas, en ambos casos, bien que ocupe toda el rea, que se centre en ella o que se distribuya en forma de tapiz. Con paginacin (Paging) es muy simple conseguir que grficos de tipo lneas o similares, que puedan tener un nmero muy alto de puntos o una longitud grande se puedan distribuir en distintas pginas, especificando la cantidad de ellos que queremos que aparezcan en cada pgina. Las dos ltimas opciones, Walls y 3D, tienen como objetivo configurar las formas y los bordes en que se dibujan los ejes, tanto en profundidad, colores, etc. Todo lo mencionado anteriormente afecta al grfico en s y su relacin con las Series, en el caso de escalas de ejes de coordenadas, por ejemplo, pero a excepcin de la que hemos utilizado como ejemplo, no nos hemos referido a ellas, ni a su presentacin, ni a las relaciones existente cuando se utilizan varias, y a ello dedicaremos en adelante.
Figura 2 Figura 1 Vamos a utilizar para el ejemplo tres tipos bsicos en programas de gestin, la de Lneas , Pie (tarta) y Barras (en este caso verticales), y para no equivocarnos cambio su nombre por defecto Series1, 2 y 3 por
Figura 5
Tipo Line Fast Line Bar Horiz Bar Area Point Pie Arrow Bubble Gantt Shape
Variables 2 2 2 2 2 2 1 4 3 3 4
X, Y, Xlabel X, Y, Xlabel X, Y, Xlabel X, Y, Xlabel X, Y, Xlabel X, Y, Xlabel Valor, Xlabel X0, Y0, Xlabel, X1, Y1 X, Y, Xlabel, Radio Valor1, Valor2, Distancia, labels X0, Y0, X1, Y1 Cuadro 1
Figura 1 Y como siempre ocurre, no nos gusta. No es legible, un grfico tiene que servir para ser analizado en un instante, la retina debe de captar los datos de forma inmediata. No nos dice nada el cuadro de valores de situado a la derecha, no sabemos de qu van los ejes ni qu se esta representando. Todo eso hay que arreglarlo. Como dijimos en los anteriores nmeros, son dos opciones diferentes las que afectan al Chart y las de las Series, y como tal las vamos a considerar.
10
Figura 2
procedure TForm1.Button1Click(Sender: TObject); var x:byte; begin With Chart1 do begin // Borramos el texto que hubiera Title.Text.Clear; // Aadimos el nuestro con color de fondo Title.Color:=clWhite; Title.text.add('Resultados del 1.999'); // Eliminamos el cuadro de valores Legend.Visible:=False;
11
12
13
14
Figura 4 Y una observacin al mismo: aparecen tres Series creadas, y he cambiado el fuente para que se vea que una de ellas aparece aadida al Chart a travs del ParentChart, en tanto que para las otras dos he utilizado, la funcin AddSeries() solamente para que se vea que el resultado es similar.
15
Figura 5 Y una observacin al mismo: aparecen tres Series creadas, y he cambiado el fuente para que se vea que una de ellas aparece aadida al Chart a travs del ParentChart, en tanto que para las otras dos he utilizado, la funcin AddSeries() solamente para que se vea que el resultado es similar.
16
17
18
Figura 6
Y la utilidad de ello es mucho mayor de lo que parece a simple vista. En la versin estndar no existen grficos de este tipo pero podemos idear la forma de construir el tpico de nube de puntos. Y en cuanto a las lneas con mayor motivo, una lnea con una sola coordenada, como hacamos antes, coincide con uno de los ejes, hay que situarla sin ms remedio en el espacio de dos dimensiones. Y ya de por s los grficos de lneas son interesantes, pero habida cuenta que las nicas curvas que se pueden confeccionar mediante TeeChart, y an as en la versin profesional, son Beziers, pero nada nos impide (y esto lo veremos) construir cualquier otro tipo, con los clculos adecuados, siempre que la longitud de las lneas sea muy pequea, en definitiva, uniones de dos puntos muy prximos que dan como resultado una curva. Pero esto, como otros temas, lo dejaremos para el prximo.
19
20
Figura 2
Figura 3
Lo que hemos hecho ha sido dejar al usuario el Editor para que haga en ejecucin lo que se le ocurra (un comentario: este sistema lo pruebo en la versin profesional del paquete. No tengo la seguridad que en la estndar sea igualmente vlido, ya que otros Executes no lo son, no obstante la incluyo por tener razones para pensar que este s se soporta). Esto, como todos sabemos, es un arma de doble filo. Puede tanto evitarnos el preparar los grficos como obligarnos a una estancia permanente en la oficina del cliente. Realmente suele ser ms simple dejar el cambio de los atributos que resulten ms interesantes y ejecutar las nuevas configuraciones a toque de Figura 4 tecla. En el ejemplo de utilizacin de un DBChart se complica si se crean Series en tiempo de diseo, pues se han de pasar a estas las propiedades del DataSource correspondiente, teniendo muy en cuenta la asignacin de propiedades que aparece en el figura 1. Un sistema muy simple para realizar esto es crear previamente las series y activar la que el usuario elija. En este caso lo que har ser tomar los valores en dos matrices y utilizar el Chart tpico, para conseguir lo que aparece en la figura 4.
21
Crearemos las Series en ejecucin, por lo tanto tenemos que incluirlas a mano en Uses
var Form1: TForm1; aFecha: Array of string; aResultado: Array of Integer;
Puesto que vamos a trasladar los valores a representar a dos matrices, ya que estamos utilizando un componente del tipo Tchart las incluyo en Interface sin dimensionar, lo haremos en el siguiente paso cuando activemos el formulario.
procedure TForm1.FormActivate(Sender: TObject); var nReg,x:integer; begin Table1.Active:=True; nReg:=Table1.RecordCount; SetLength(aFecha, nreg); SetLength(aResultado,nreg); Table1.Active:=True; try for x:=0 to nReg-1 do begin aFecha[x]:=DatetoStr(Table1.FieldbyName('fecha').value); aResultado[x]:=Table1.FieldbyName('resultado').value; Table1.Next; end; Except Showmessage('Error') end; end;
Recordemos que tenemos los datos en una tabla de Paradox, tan solo hemos dimensionado las matrices con tantos elementos como registros tiene y hemos asignado a cada uno su valor. Como hemos visto en la figura 4 creamos tantos RadioButton como tipos de Series vayamos a crear. Para ello a cada uno le he dado un valor en su propiedad Tag.
procedure TForm1.RadioButtonClick(Sender: TObject); var Serie1:TLineSeries; Serie2:TFastLineSeries; Serie3:TBarSeries; Serie4:THorizBarSeries; x:integer; begin if Chart1.SeriesCount>0 then Chart1.SeriesList.Clear; // para evitar la superposicin de grficos borro la lista de Series // cada vez que se dispara el evento. Y a continuacin procedo // a utilizar el constructor, asocio la Serie con el Chart y dibujo // mediante la funcin Add() Case (Sender As TRadioButton).Tag of 1: begin Serie1:=TLineSeries.Create(Self); With Serie1 do
22
Impresin.
En cualquiera de ellos, tanto si la fuente de datos es una tabla como si no, se puede utilizar directamente la sentencia Chart1.Print; Que producir una salida por la impresora por defecto. Adems de las opciones relacionadas PrintPortrait PrintLandscape PrintMargins PrintPartial PrintRect PrintResolution El Preview que aparece al pulsar en edicin con el botn principal sobre el grfico, se puede realizar con
23
Figura 5
24
Los valores que he dado a la recta en los bucles, evidentemente son inventados. El resultado sera el que se ve en la figura 6.
25
Ecuaciones.
En el ejemplo anterior trazamos la ecuacin de una recta, ahora vamos a modificar ligeramente el cdigo para dar lugar a una curva. Es claro que la primera sera una ecuacin de grado uno, y en este caso lo sera de grado dos.
var y,a: Integer; x:extended; begin for y:=1 to 20 do begin for a:=1 to 300 do begin x:=power(y,2)+16; Series1.addxy(x,y,'',clblue); end; end;
Figura 7
Con esto representaramos, partiendo de una ecuacin de segundo grado, la curva que se ve en la figura 7
Lo que no se ha visto.
La pretensin de esta serie de cuatro artculos ha sido tan solo la de proporcionar un acercamiento a unos componentes que, como deca al inicio, parecen en el olvido. Lo que no he intentado en ningn momento ha sido profundizar en los mismos, sus posibilidades son mucho mayores de lo que aqu haya podido plantear, de forma que opciones como pueden ser grficos con desplazamientos, zooms, etc. ni siquiera los he mencionado. Tampoco he considerado los componentes como tal, en el sentido estricto del trmino, pues no he entrado en ningn momento a estudiar los eventos de los mismos, no he utilizado, pues, las respuestas de stos a nuestras acciones, y todo ello por dos motivos: necesitara una cantidad de artculos muy alta para intentar, mnimamente, agotar las posibilidades, y mi imaginacin es muy limitada a la hora de mostrar stas con ejemplos medianamente realistas.
26