Esta pagina describe los pasos basicos y las llamadas relacionadas con el subprograma para el suministro de datos a las rutinas de graficos.
Descripcion:
Los datos y la presentacion de datos en un grafico estan separada en areas diferentes, por diseno. Esto le permite tener un proceso que produce un grafico, pero no tiene que saber nada acerca de los datos que se representan graficamente. Un proceso separado puede acumular los datos que se trazaron, a continuacion, solo tiene que ejecutar el proceso de la otra para producir el grafico. Los datos reales se organizan en una estructura especial: un "punto de datos" es la unidad mas pequena y representa una unidad de datos y un "conjunto de datos" es un conjunto de "puntos de datos relacionados". Para efectos de presentacion, hay un "data set template", un "data group", que es una coleccion de "data set templates” y una "layer", que es una coleccion de los "data groups”.
Todo lo anterior puede ser identificado, o no. Si esta trabajando con multiples layers, grupos de datos, y data set templates o data sets, se pueden nombrar para que trazar sea mas facil. Si solo necesita una layer, data group, data set template, etc, entonces usted puede dejar el nombre en blanco cuando se crean.
Los atributos de "layers", "data groups'y' data set templates" se pueden ajustar de forma individual, es decir, puede cambiar el color o la forma de todas las barras en un "data group" para que sea diferente de otros tipos de barras. El tipo de layer determina como los datos seran presentados, es decir, usted puede tener un tipo de layer XY para graficos de barras, una layer de Area para graficos de areas, etc Usted puede hacer mas de una layer en un grafico, la combinacion de los distintos tipos de graficos .
Los datos que se trazan en un grafico se mantiene en un "conjunto de datos". No hay un limite especifico para el numero de "puntos" en el conjunto de datos. Tambien puede administrar mas de un conjunto de datos a la vez, dando a cada conjunto de datos de un nombre unico al que lo inicialice.
El flujo general es inicializar un conjunto de datos, a continuacion, utilizar varias subrutinas para agregar datos a su base de datos. Cuando se inicializa un grafico circular, un conjunto de datos se inicia automaticamente. Si ya dispone de un conjunto de datos inicializa cuando se llama a la rutina de inicializacion de un grafico circular, entonces ese conjunto de datos se asociara con el nuevo grafico.
Ciertos tipos de grafico tienen rutinas especificas para definir layers de datos, es decir, un grafico de barras que agreag mas de un conjunto de datos. Estos se discuten en el marco del API de tabla para ese tipo particular. Los graficos circulares tienen una API especifica que le permite agregar un punto de datos y una etiqueta al mismo tiempo (vea
Chart design example)
El codigo siguiente ilustra la adicion de una layer de datos en un grafico de barras:
* ================================================================
*
* Add a bar chart layer to the chart
GOSUB 0CD .XY ADD BAR LAYER
*
* Add data group
GOSUB 0CD .LAYER ADD DATA GROUP
*
* Add dataset template
GOSUB 0CD .LAYER ADD DATASET TM
* ================================================================
* Initialize dataset
* ================================================================
PASS 1 FIELD SHARE? N
GOSUB 0CD .DATASET INITIALIZE
*
* Link dataset template to dataset
GOSUB 0CD .LAYER LINK DATASET TM
*
* ================================================================
* Add data to dataset
* ================================================================
*
PASS 85 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 156 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 179.5 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 211 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 123 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
_----
---
Este ejemplo, solo habia un conjunto de datos, por lo que los nombres “default” se usa para crear y vincular los datos. Un ejemplo mas complejo seria el caso en que tenemos uso de la red por 3 servidores diferentes para un periodo de una semana (lunes - viernes). En primer lugar queremos inicializar un "data set" para uno de los servidores (posiblemente dandole el nombre "servidor1") a traves de .DATASET INITIALIZE.
A continuacion, agregamos nosotros cada dia para uso de la red a traves de ese servidor .POINT ADD NEW.
Queremos repetir los pasos para el segundo y tercero servidor, nombrando cada "conjunto de datos", segun corresponda. Ahora tenemos tres "conjuntos de datos" que contienen los "puntos de informacion" del uso de la red para cada servidor. Para representar esto en un grafico de barras, se crearia una "layer" de nuestra tabla de via .XY ADD BAR LAYER,
a continuacion, agregar un 'grupo de datos.LAYER ADD DATA GROUP.
A continuacion se anadiria 'data set templates” para cada uno de los tres servidores a traves de .LAYER ADD DATASET TM.
sto define la presentacion de de nuestra chart, sin hacer referencia a los datos reales. Para agregar los datos a nuestra tabla, usaria .LAYER LINK DATASET TM para vincular los datos previamente introducidos con ‘data set templates”.
The following illustrates this example:
*
GOSUB :DEFINE CHART
GOSUB :DEFINE LAYER
GOSUB :DEFINE GROUPS
GOSUB :DEFINE LABELS
*
GOSUB :CREATE DATA
* Link the data to the data set templates
PASS SERVER1 FIELD SHARE? N
PASS DS1 FIELD SHARE? N
GOSUB 0CD .LAYER LINK DATASET TM
PASS SERVER2 FIELD SHARE? N
PASS DS2 FIELD SHARE? N
GOSUB 0CD .LAYER LINK DATASET TM
PASS SERVER3 FIELD SHARE? N
PASS DS3 FIELD SHARE? N
GOSUB 0CD .LAYER LINK DATASET TM
*
GOSUB :RENDER CHART
END
*
LABEL :DEFINE GROUPS
* ================================================================
* Add a group to link datasets to
PASS GROUP1 FIELD SHARE? N
GOSUB 0CD .LAYER ADD DATA GROUP
*
PASS DS1 FIELD SHARE? N
GOSUB 0CD .LAYER ADD DATASET TM
*
* Set Legend Title
PASS Server # 1 FIELD SHARE? N
GOSUB 0CD .XY SET LEGEND TXT
*
* Set dataset template color
PASS RED FIELD SHARE? N
GOSUB 0CD .XY SET BAR CLR
* ================================================================
* Add second dataset to group
*
PASS DS2 FIELD SHARE? N
GOSUB 0CD .LAYER ADD DATASET TM
*
* Set Legend Title and Layer Name
PASS Server # 2 FIELD SHARE? N
GOSUB 0CD .XY SET LEGEND TXT
*
* Set dataset template color
PASS GREEN FIELD SHARE? N
GOSUB 0CD .XY SET BAR CLR
* ================================================================
* Add third dataset to group
*
PASS DS3 FIELD SHARE? N
GOSUB 0CD .LAYER ADD DATASET TM
*
* Set Legend Title and Layer Name
PASS Server # 3 FIELD SHARE? N
GOSUB 0CD .XY SET LEGEND TXT
*
* Set dataset template color
PASS BLUE FIELD SHARE? N
GOSUB 0CD .XY SET BAR CLR
RETURN
*
LABEL :RENDER CHART
* ================================================================
* Render chart
* ================================================================
SET --- TEMP 256 =
PASS --- TEMP 256 FIELD SHARE? Y
GOSUB 0CD .CHART RENDER
IF 0CD .CHART RENDER EQ
F TRAP
SET 1CD WORK CHART FILENAME 001 = --- TEMP 256
RETURN
*
LABEL :CREATE DATA
* ================================================================
* Initialize and name a dataset
* ================================================================
PASS 1 FIELD SHARE? N
PASS SERVER1 FIELD SHARE? N
GOSUB 0CD .DATASET INITIALIZE
* ================================================================
* Add data points to dataset
* ================================================================
PASS 100 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 125 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 245 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 147 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 67 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
* Second data set
PASS 1 FIELD SHARE? N
PASS SERVER2 FIELD SHARE? N
GOSUB 0CD .DATASET INITIALIZE
* ================================================================
* Add data points to dataset
* ================================================================
PASS 85 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 156 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 179 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 211 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 123 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
* ================================================================
* Initialize and name a dataset
* ================================================================
PASS 1 FIELD SHARE? N
PASS SERVER3 FIELD SHARE? N
GOSUB 0CD .DATASET INITIALIZE
* ================================================================
* Add data points to dataset
* ================================================================
PASS 97 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 87 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 56 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 267 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
*
PASS 157 FIELD SHARE? N
GOSUB 0CD .POINT ADD NEW
RETURN
*
LABEL :DEFINE CHART
* Create a Multi-Bar Chart
*
* ================================================================
* Initialize chart
* ================================================================
*
* Initialize an XY chart
PASS XY CHART FIELD SHARE? N
GOSUB 0CD .CHART INITIALIZE
*
* ================================================================
* Set chart attributes
* ================================================================
*
* Set chart size
PASS 500 FIELD SHARE? N
PASS 320 FIELD SHARE? N
GOSUB 0CD .CHART SET BG SIZE
*
* Set the plot area
PASS 100 FIELD SHARE? N
PASS 40 FIELD SHARE? N
PASS 280 FIELD SHARE? N
PASS 240 FIELD SHARE? N
GOSUB 0CD .XY SET PLOT AREA
* ================================================================
* Add titles
* ================================================================
* Chart title
SET --- TEMP 80 = Weekday
APPEND --- TEMP 80 1 Network Load
PASS --- TEMP 80 FIELD SHARE? N
GOSUB 0CD .CHART SET TITLE
* Y axis title
PASS Y FIELD SHARE? N
GOSUB 0CD .AXIS SET CURRENT
SET --- TEMP 80 = "Average\n
APPEND --- TEMP 80 1 Workload\n
APPEND --- TEMP 80 1 (Mbytes\n
APPEND --- TEMP 80 1 Per Hour)"
PASS --- TEMP 80 FIELD SHARE? N
GOSUB 0CD .AXIS SET TITLE
* ================================================================
* Add a legend box
* ================================================================
PASS 400 FIELD SHARE? N
PASS 100 FIELD SHARE? N
GOSUB 0CD .CHART SET LEGEND BOX
*
RETURN
*
LABEL :DEFINE LAYER
* ================================================================
* Add a layer to chart and set layer attributes.
* ================================================================
SET --- TEMP 1 =
PASS SIDE FIELD SHARE? N
PASS --- TEMP 1 FIELD SHARE? N
PASS OFF FIELD SHARE? N
GOSUB 0CD .XY ADD BAR LAYER
*
* Set layer to be in 3D
PASS 5 FIELD SHARE? N
GOSUB 0CD .XY SET BAR 3D DEPTH
RETURN
*
LABEL :DEFINE LABELS
* ================================================================
* Add X axis labels
* ================================================================
* Set the axis we are going to add labels to.
PASS X FIELD SHARE? N
GOSUB 0CD .AXIS SET CURRENT
*
PASS Mon FIELD SHARE? N
GOSUB 0CD .AXIS LABEL ADD NEXT
*
PASS Tue FIELD SHARE? N
GOSUB 0CD .AXIS LABEL ADD NEXT
*
PASS Wed FIELD SHARE? N
GOSUB 0CD .AXIS LABEL ADD NEXT
*
PASS Thu FIELD SHARE? N
GOSUB 0CD .AXIS LABEL ADD NEXT
*
PASS Fri FIELD SHARE? N
GOSUB 0CD .AXIS LABEL ADD NEXT
*
RETURN
En este ejemplo, cuando se definieron las plantillas de conjuntos de datos, nos dio a cada uno un nombre (DS1, DS2, DS3), y cuando hemos anadido nuestros conjuntos de datos, nos dio a cada uno un nombre tambien (SERVER1, SERVER2, SERVER3 ). Entonces pudimos vincular data set template atraves de .LAYER LINK DATASET TIM, pasandole los nombres especificos que queriamos vinculados. Si quisieramos hacer esta tabla con un conjunto diferente de datos, lo unico que tienes que hacer es crear 3 nuevos conjuntos de datos, vuelva a vincular los utilizando .LAYER LINK DATASET TM, y luego hacer el grafico de nuevo. Observe cuando llamamos. XY ADD BAR LAYER, pasamos el parametro OFF para suprimir la creacion automatica y la vinculacion de grupos de datos, el conjunto de datos de plantillas y conjuntos de datos. Dado que estamos manejando nosotros mismos, no queria que la rutina que lo haga por nosotros. Observe tambien la tecnica de pasar a un campo vacio. XY ADD BAR LAYER. Queriamos pasar los parametros primero y tercero, asi que tuvimos que tener un campo ficticio para pasar como segundo parametro (--- TEMP 1 en este caso).
Comentarios
Read what other users have said about this page or add your own comments.
--
JeanNeron - 2011-09-21