1 <?php /* vim: set binary expandtab tabstop=4 shiftwidth=4 textwidth=80:
2 -------------------------------------------------------------------------------
5 -------------------------------------------------------------------------------
6 This file is part of meconlib.
8 meconlib is free software; you can redistribute it and/or modify it under
9 the terms of the GNU General Public License as published by the Free
10 Software Foundation; either version 2 of the License, or (at your option)
13 meconlib is distributed in the hope that it will be useful, but WITHOUT
14 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
15 FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
17 You should have received a copy of the GNU General Public License; if not,
18 write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330,
19 Boston, MA 02111-1307 USA
20 -------------------------------------------------------------------------------
21 Creado: Tue Nov 26 12:45:31 2003
22 Autor: Manuel Nazar Anchorena <manazar@mecon.gov.ar>
23 -------------------------------------------------------------------------------
24 $Id: Graph.php 428 2003-11-18 14:30:30Z mmarre $
25 -----------------------------------------------------------------------------*/
27 require_once 'MECON/Graph/external/jpgraph/src/jpgraph.php';
30 * Liberia base para el manejo de graficos.
36 * Tipo del grafico (xy, torta, gantt)
58 * El grafico propiamente dicho.
65 * Booleano que define si se muestran o no los valores
66 * @var bool $verValores
74 * @param string $tipo Tipo de grafico(xy,torta,torta3D,gantt)
75 * @param int $ancho Ancho del grafico
76 * @param int $alto Alto del grafico
77 * @param string $titulo Titulo del grafico.
78 * @param array $attrib_gral Contiene opciones generales para el grafico.
83 function MECON_graph($tipo, $ancho=300, $alto=200,$titulo,$attrib_gral=NULL)
86 $this->_ancho= $ancho;
89 if (isset($attrib_gral['verValores']))
90 $this->_verValores= $attrib_gral['verValores'];
92 if($this->_tipo=="xy")
94 $this->_grafico= new Graph($ancho,$alto,"auto");
95 $this->_grafico->SetScale("textlin");
97 if (isset($attrib_gral['Xtitulo']))
98 $this->_grafico->xaxis->title->Set($attrib_gral['Xtitulo']);
100 if (isset($attrib_gral['Ytitulo']))
101 $this->_grafico->yaxis->title->Set($attrib_gral['Ytitulo']);
103 if (isset($attrib_gral['XEtiquetas']))
104 $this->_grafico->xaxis->SetTickLabels($attrib_gral['XEtiquetas']);
107 if(($this->_tipo=="torta")||($this->_tipo=="torta3D"))
109 require_once 'MECON/Graph/external/jpgraph/src/jpgraph_pie.php';
110 require_once 'MECON/Graph/external/jpgraph/src/jpgraph_pie3d.php';
112 $this->_grafico= new PieGraph($ancho,$alto);
119 $this->_grafico->title-> Set($titulo);
120 if (isset($attrib_gral['subTitulo']))
121 $this->_grafico->subtitle->Set($attrib_gral['subTitulo']);
122 if (isset($attrib_gral['verSombra']) and $attrib_gral['verSombra']==true)
123 $this->_grafico->SetShadow();
129 * Agrega Secuencia de datos.
131 * @param array $tipo Tipo de grafico para la secuencia
132 * @param array $secuencia Datos del arreglo
133 * @param array $atributos Atributos especiales para la secuencia
135 * Tipos de secuencias para gráficos xy:
144 * - impulso ("si") (solamente para puntos)
145 * - tipoMarca (de 1 a 17) (solamente para puntos)
146 * - etiquetas (array) (para gráficos de torta muestra las etiquetas
147 * en lugar de los porcentajes)
148 * - explotar (para torta y torta3D) (valor que indica la separación de
149 * de las porciones de la torta)
150 * - posLeyenda (array con dos coordenadas para la posición de la leyenda)
151 * - formatoValores (string con el formato que se quiere dar a los valores (sprintf))
156 function agregarSecuencia($tipo,$secuencia,$atributos=NULL)
158 if($this->_tipo=="xy")
165 require_once 'MECON/Graph/external/jpgraph/src/jpgraph_line.php';
166 $plot= new LinePlot($secuencia);
168 if (isset($atributos['formatoValores']))
169 $plot->value->format = $atributos['formatoValores'];
171 if ($this->_verValores)
172 $plot->value->Show();
174 if (isset($atributos['colorRelleno']))
176 $plot->SetFillColor($atributos['colorRelleno']);
185 require_once 'MECON/Graph/external/jpgraph/src/jpgraph_bar.php';
186 $plot= new BarPlot($secuencia);
188 if (isset($atributos['formatoValores']))
189 $plot->value->format = $atributos['formatoValores'];
191 if ($this->_verValores)
192 $plot->value->Show();
194 if (isset($atributos['colorRelleno']))
196 $plot->SetFillColor($atributos['colorRelleno']);
204 require_once 'MECON/Graph/external/jpgraph/src/jpgraph_scatter.php';
205 $plot= new ScatterPlot($secuencia);
207 if (isset($atributos['formatoValores']))
208 $plot->value->format = $atributos['formatoValores'];
210 if ($this->_verValores)
211 $plot->value->Show();
213 if (isset($atributos['colorRelleno'])){
214 $plot->mark->SetFillColor($atributos['colorRelleno']);
217 if (isset($atributos['tipoMarca'])){
218 $plot->mark->SetType($atributos['tipoMarca']);
221 if (isset($atributos['impulso']))
223 if ($atributos['impulso']=="si")
228 // Seteo opciones generales
229 if (isset($atributos['color']))
231 $plot->SetColor($atributos['color']);
233 if (isset($atributos['leyenda']))
235 $plot->SetLegend($atributos['leyenda']);
236 //$this->_grafico->legend->SetLayout(LEGEND_HOR);
237 $this->_grafico->legend->Pos(0.02,0.01);
244 die ("Error: Tipo de grafico $tipo no valido (aun)");
249 if(($this->_tipo=="torta")||($this->_tipo=="torta3D"))
251 if($this->_tipo=="torta")
252 $plot= new PiePlot($secuencia);
254 if($this->_tipo=="torta3D")
255 $plot= new PiePlot3D($secuencia);
257 if ($this->_verValores)
258 $plot->value->Show();
261 if (isset($atributos['leyendas']))
263 $plot->SetLegends($atributos['leyendas']);
266 if (isset($atributos['etiquetas']))
268 $plot->SetLabels($atributos['etiquetas']);
272 if (isset($atributos['centro']))
274 $x=$atributos['centro'][0];
275 $y=$atributos['centro'][1];
276 $plot->SetCenter($x,$y);
279 if (isset($atributos['explotar'])){
280 $plot->ExplodeAll($atributos['explotar']);
285 $this->_grafico->Add($plot);
287 if (isset($atributos['posLeyenda'])){
288 $this->_grafico->legend->xpos = $atributos['posLeyenda'][0];
289 $this->_grafico->legend->ypos = $atributos['posLeyenda'][1];
294 * Genera el grafico y lo dibuja.
301 $this->_grafico->Stroke();