------------------------------------------------------------------------------- $Id: Graph.php 428 2003-11-18 14:30:30Z mmarre $ -----------------------------------------------------------------------------*/ require_once 'MECON/Graph/external/jpgraph/src/jpgraph.php'; /** * Liberia base para el manejo de graficos. */ class MECON_Graph { /** * Tipo del grafico (xy, torta, gantt) * @var int $ancho * @access private */ var $_tipo; /** * Ancho del grafico. * @var int $ancho * @access private */ var $_ancho; /** * Alto del grafico. * @var int $alto * @access private */ var $_alto; /** * El grafico propiamente dicho. * @var Graph $grafico * @access private */ var $_grafico; /** * Booleano que define si se muestran o no los valores * @var bool $verValores * @access private */ var $_verValores; /** * Class constructor. * * @param string $tipo Tipo de grafico(xy,torta,torta3D,gantt) * @param int $ancho Ancho del grafico * @param int $alto Alto del grafico * @param string $titulo Titulo del grafico. * @param array $attrib_gral Contiene opciones generales para el grafico. * * @return void * @access public */ function MECON_graph($tipo, $ancho=300, $alto=200,$titulo,$attrib_gral=NULL) { $this->_tipo=$tipo; $this->_ancho= $ancho; $this->_alto= $alto; if (isset($attrib_gral['verValores'])) $this->_verValores= $attrib_gral['verValores']; if($this->_tipo=="xy") { $this->_grafico= new Graph($ancho,$alto,"auto"); $this->_grafico->SetScale("textlin"); if (isset($attrib_gral['Xtitulo'])) $this->_grafico->xaxis->title->Set($attrib_gral['Xtitulo']); if (isset($attrib_gral['Ytitulo'])) $this->_grafico->yaxis->title->Set($attrib_gral['Ytitulo']); if (isset($attrib_gral['XEtiquetas'])) $this->_grafico->xaxis->SetTickLabels($attrib_gral['XEtiquetas']); } if(($this->_tipo=="torta")||($this->_tipo=="torta3D")) { require_once 'MECON/Graph/external/jpgraph/src/jpgraph_pie.php'; require_once 'MECON/Graph/external/jpgraph/src/jpgraph_pie3d.php'; $this->_grafico= new PieGraph($ancho,$alto); } //Atributos en comun if (isset($titulo)) $this->_grafico->title-> Set($titulo); if (isset($attrib_gral['subTitulo'])) $this->_grafico->subtitle->Set($attrib_gral['subTitulo']); if (isset($attrib_gral['verSombra']) and $attrib_gral['verSombra']==true) $this->_grafico->SetShadow(); } /** * Agrega Secuencia de datos. * * @param array $tipo Tipo de grafico para la secuencia * @param array $secuencia Datos del arreglo * @param array $atributos Atributos especiales para la secuencia * * Tipos de secuencias para gráficos xy: * - lineas * - barras * - puntos * * Atributos: * - color * - colorRelleno * - leyenda * - impulso ("si") (solamente para puntos) * - tipoMarca (de 1 a 17) (solamente para puntos) * - etiquetas (array) (para gráficos de torta muestra las etiquetas * en lugar de los porcentajes) * - explotar (para torta y torta3D) (valor que indica la separación de * de las porciones de la torta) * - posLeyenda (array con dos coordenadas para la posición de la leyenda) * - formatoValores (string con el formato que se quiere dar a los valores (sprintf)) * * @return void * @access public */ function agregarSecuencia($tipo,$secuencia,$atributos=NULL) { if($this->_tipo=="xy") { $valido=false; if ($tipo=="lineas") { $valido=true; require_once 'MECON/Graph/external/jpgraph/src/jpgraph_line.php'; $plot= new LinePlot($secuencia); if (isset($atributos['formatoValores'])) $plot->value->format = $atributos['formatoValores']; if ($this->_verValores) $plot->value->Show(); if (isset($atributos['colorRelleno'])) { $plot->SetFillColor($atributos['colorRelleno']); } } if ($tipo=="barras") { $valido=true; require_once 'MECON/Graph/external/jpgraph/src/jpgraph_bar.php'; $plot= new BarPlot($secuencia); if (isset($atributos['formatoValores'])) $plot->value->format = $atributos['formatoValores']; if ($this->_verValores) $plot->value->Show(); if (isset($atributos['colorRelleno'])) { $plot->SetFillColor($atributos['colorRelleno']); } } if ($tipo=="puntos") { $valido=true; require_once 'MECON/Graph/external/jpgraph/src/jpgraph_scatter.php'; $plot= new ScatterPlot($secuencia); if (isset($atributos['formatoValores'])) $plot->value->format = $atributos['formatoValores']; if ($this->_verValores) $plot->value->Show(); if (isset($atributos['colorRelleno'])){ $plot->mark->SetFillColor($atributos['colorRelleno']); } if (isset($atributos['tipoMarca'])){ $plot->mark->SetType($atributos['tipoMarca']); } if (isset($atributos['impulso'])) { if ($atributos['impulso']=="si") $plot->SetImpuls(); } } // Seteo opciones generales if (isset($atributos['color'])) { $plot->SetColor($atributos['color']); } if (isset($atributos['leyenda'])) { $plot->SetLegend($atributos['leyenda']); //$this->_grafico->legend->SetLayout(LEGEND_HOR); $this->_grafico->legend->Pos(0.02,0.01); } //Si hubo error if ($valido==false) { die ("Error: Tipo de grafico $tipo no valido (aun)"); } }//del if tipo xy if(($this->_tipo=="torta")||($this->_tipo=="torta3D")) { if($this->_tipo=="torta") $plot= new PiePlot($secuencia); if($this->_tipo=="torta3D") $plot= new PiePlot3D($secuencia); // Esto lo agrego porque si no, no redondea a 100% $plot->labeltype = 2; if ($this->_verValores) $plot->value->Show(); if (isset($atributos['leyendas'])) { $plot->SetLegends($atributos['leyendas']); } if (isset($atributos['etiquetas'])) { $plot->SetLabels($atributos['etiquetas']); } if (isset($atributos['centro'])) { $x=$atributos['centro'][0]; $y=$atributos['centro'][1]; $plot->SetCenter($x,$y); } if (isset($atributos['explotar'])){ $plot->ExplodeAll($atributos['explotar']); } } $this->_grafico->Add($plot); if (isset($atributos['posLeyenda'])){ $this->_grafico->legend->xpos = $atributos['posLeyenda'][0]; $this->_grafico->legend->ypos = $atributos['posLeyenda'][1]; } } /** * Genera el grafico y lo dibuja. * * @return void * @access public */ function generar() { $this->_grafico->Stroke(); } }