* @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.
+ * @param array $attrib_gral Contiene opciones generales para el gráfico.
+ *
+ * Opciones generales para gráficos XY:
+ * - XTitulo (Título del Eje X)
+ * - YTitulo (Título del Eje Y)
+ * - XEtiquetas (Array de Referencias del eje X)
+ * - XEtiquetasRotar (Rota las etiquetas del eje X en 90 grados)
+ * - margenes (array asociativo con alguna/s de las siguientes claves:
+ * - L (margen izquierdo)
+ * - R (margen derecho)
+ * - T (margen superior)
+ * - B (margen inferior))
*
* @return void
* @access public
if (isset($attrib_gral['XEtiquetas']))
$this->_grafico->xaxis->SetTickLabels($attrib_gral['XEtiquetas']);
+
+ if (isset($attrib_gral['XEtiquetasRotar']))
+ $this->_grafico->xaxis->label_angle = 90;
}
if(($this->_tipo=="torta")||($this->_tipo=="torta3D"))
$this->_grafico->subtitle->Set($attrib_gral['subTitulo']);
if (isset($attrib_gral['verSombra']) and $attrib_gral['verSombra']==true)
$this->_grafico->SetShadow();
-
- }
+
+ if (isset($attrib_gral['margenes'])){
+ if (isset($attrib_gral['margenes']['L']))
+ $this->_grafico->img->left_margin = $attrib_gral['margenes']['L'];
+
+ if (isset($attrib_gral['margenes']['R']))
+ $this->_grafico->img->right_margin = $attrib_gral['margenes']['R'];
+
+ if (isset($attrib_gral['margenes']['T']))
+ $this->_grafico->img->top_margin = $attrib_gral['margenes']['T'];
+
+ if (isset($attrib_gral['margenes']['B']))
+ $this->_grafico->img->bottom_margin = $attrib_gral['margenes']['B'];
+ }
+
+ }
/**
* - 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)
+ * 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))
+ * - formatoValores (string con el formato que se quiere dar a los valores
+ * (sprintf))
+ * - noAgregar (Si está seteado indica que la secuencia se genera pero no
+ * se agrega al gráfico. Se utiliza para gráficos de barras
+ * acumulativos, donde las secuencias deben agregarse todas
+ * juntas al final)
*
- * @return void
+ * @return plot
* @access public
*/
function agregarSecuencia($tipo,$secuencia,$atributos=NULL)
}else
{
- die ("Error: Tipo de grafico $tipo no valido (aun)");
+ trigger_error ("Error: Tipo de grafico $tipo no valido (aun)", E_USER_ERROR);
}
}//del if tipo xy
$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];
}
+
+ if (!isset($atributos['noAgregar']))
+ $this->_grafico->Add($plot);
+
+ return $plot;
+
}
-
+
/**
- * Genera el grafico y lo dibuja.
+ * 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');
+ *
+ * $b1plot = $graph->agregarSecuencia("barras", $v1);
+ * $b2plot = $graph->agregarSecuencia("barras", $v2);
+ *
+ * $graph->acumular(array($b1plot, $b2plot));
+ * $graph->generar();
+ *
+ * @endcode
+ *
+ * @param array $secuencias Secuencias de barras a acumular
+ *
+ * @return void
+ * @access public
+ */
+ function acumular ($secuencias)
+ {
+ $rgb = new RGB();
+ $colores = array_keys ($rgb->rgb_table);
+
+ // Esto pinta cada secuencia de un color diferente
+ for ($i=0; $i< count($secuencias); $i++)
+ $secuencias[$i]->SetFillColor ($colores[$i]);
+
+ $accplot = new AccBarPlot($secuencias);
+ $this->_grafico->Add($accplot);
+ }
+
+ /**
+ * 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;
+ }
}