* @access public
*/
function MECON_graph($tipo, $ancho=300, $alto=200,$titulo,$attrib_gral=NULL)
- {
+ {
$this->_tipo=$tipo;
$this->_ancho= $ancho;
$this->_alto= $alto;
{
$this->_grafico= new Graph($ancho,$alto,"auto");
$this->_grafico->SetScale("textlin");
-
+
if (isset($attrib_gral['Xtitulo']))
- $this->_grafico->xaxis->title->Set($attrib_gral['Xtitulo']);
-
+ $this->_grafico->xaxis->title->Set($attrib_gral['Xtitulo']);
+
if (isset($attrib_gral['Ytitulo']))
$this->_grafico->yaxis->title->Set($attrib_gral['Ytitulo']);
$this->_grafico->title-> Set($titulo);
if (isset($attrib_gral['subTitulo']))
$this->_grafico->subtitle->Set($attrib_gral['subTitulo']);
- if ($attrib_gral['verSombra']==true)
- {
+ if (isset($attrib_gral['verSombra']) and $attrib_gral['verSombra']==true)
$this->_grafico->SetShadow();
- }
+
}
* @param array $secuencia Datos del arreglo
* @param array $atributos Atributos especiales para la secuencia
*
- * @return void
+ * Tipos de secuencias para gráficos xy:
+ * - lineas
+ * - barras
+ * - puntos
+ *
+ * Atributos:
+ * - color
+ * - colorRelleno (solamente barras y puntos)
+ * - 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 plot
* @access public
*/
function agregarSecuencia($tipo,$secuencia,$atributos=NULL)
$valido=true;
require_once 'MECON/Graph/external/jpgraph/src/jpgraph_line.php';
$plot= new LinePlot($secuencia);
- 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 ($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 ($this->_verValores)
- $plot->value->Show();
+
+ if (isset($atributos['tipoMarca']))
+ $plot->mark->SetType($atributos['tipoMarca']);
if (isset($atributos['impulso']))
{
$plot->SetImpuls();
}
}
-
- // Seteo opciones generales
- if (isset($atributos['color']))
- {
- $plot->SetColor($atributos['color']);
- }
- if (isset($atributos['leyenda']))
+
+ //Si hubo error
+ if ($valido==true)
{
- $plot->SetLegend($atributos['leyenda']);
- //$this->_grafico->legend->SetLayout(LEGEND_HOR);
- //$this->_grafico->legend->Pos(0.05,0.5,"bottom","center");
- }
+
+ // Seteo opciones generales
+ if (isset($atributos['formatoValores']))
+ $plot->value->format = $atributos['formatoValores'];
+ if ($this->_verValores)
+ $plot->value->Show();
+
+ if (isset($atributos['color']))
+ $plot->SetColor($atributos['color']);
- //Si hubo error
- if ($valido==false)
+ if (isset($atributos['leyenda']))
+ {
+ $plot->SetLegend($atributos['leyenda']);
+ //$this->_grafico->legend->SetLayout(LEGEND_HOR);
+ $this->_grafico->legend->Pos(0.02,0.01);
+ }
+
+ }else
{
die ("Error: Tipo de grafico $tipo no valido (aun)");
}
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']))
{
$plot->SetCenter($x,$y);
}
- }
+ if (isset($atributos['explotar']))
+ $plot->ExplodeAll($atributos['explotar']);
+
+ }// del if torta
$this->_grafico->Add($plot);
- }
-
+ if (isset($atributos['posLeyenda']))
+ {
+ $this->_grafico->legend->xpos = $atributos['posLeyenda'][0];
+ $this->_grafico->legend->ypos = $atributos['posLeyenda'][1];
+ }
-
+ return $plot;
+
+ }
+
+ /**
+ * Acumula las secuencias para generar un gráfico acumulativo de barras
+ *
+ * Ejemplo de Uso:
+ * @code
+ * require_once 'MECON/Graph.php';
+ *
+ * $v1 = array(12,8,19,3,10,5);
+ * $v2 = array(1,28,9,13,1,5);
+ *
+ * $graph =& new MECON_Graph ("xy", 300, 300, 'PRUEBA');
+ *
+ * $attribs1 = array('colorRelleno'=>'green');
+ * $attribs2 = array('colorRelleno'=>'orange');
+ *
+ * $b1plot = $graph->agregarSecuencia("barras", $v1, $attribs1);
+ * $b2plot = $graph->agregarSecuencia("barras", $v2, $attribs2);
+ *
+ * $graph->acumular(array($b1plot, $b2plot));
+ * $graph->generar();
+ *
+ * @endcode
+ *
+ * @param array $secuencias Secuencias de barras a acumular
+ *
+ * @return void
+ * @access public
+ */
+ function acumular ($secuencias)
+ {
+ $accplot = new AccBarPlot($secuencias);
+ $this->_grafico->Add($accplot);
+ }
+
/**
- * Genera el grafico y lo dibuja.
+ * Genera el gráfico y lo dibuja.
*
* @return void
* @access public
$this->_grafico->Stroke();
}
+ /**
+ * Convierte los valores numéricos de entrada en porcentajes
+ *
+ * Ejemplo de uso:
+ * @code
+ * require_once 'MECON/Graph.php';
+ *
+ * $valores = array (4, 6, 23, 14, 30);
+ * $nuevos = MECON_Graph::porcentajes($valores);
+ *
+ * // se obtiene (5, 8, 30, 18, 39) (%)
+ *
+ * @endcode
+ *
+ * @param array $valores Array de valores numéricos
+ *
+ * @return array
+ * @access public
+ * @static
+ */
+ function porcentajes ($valores)
+ {
+ require_once 'MECON/Graph/external/jpgraph/src/jpgraph_pie.php';
+ $plot = new PiePlot ($valores);
+
+ $porciento = $plot->AdjPercentage ($valores);
+
+ return $porciento;
+ }
}