free web hostingHosting24.com web hosting

Gráficos Estadísticos Multiseries

A pedido de los lectores del blog, hago esta pequeña explicación sobre gráficos estadísticos multiseries. En breve publicaré un tutorial sobre gráficos de línea.


Al final de este ejemplo, encontrarán el enlace para descargar el código fuente completo.
Pueden ver los demás tutoriales sobre gráficos para tener más claros los parámetros usados para graficar:
Gráficos estadísticos de Barras
Gráficos estadísticos Maestro/Detalle

Idea General: Se tendrán 4 productos (gaseosas) de los cuales se quiere comparar el total de dinero obtenido de sus ventas en 3 años (Anio1, Anio2, Anio3).
multiserie
Empezamos incluyendo la librería necesaria:

require_once 'includes/FusionCharts.php';

Cargamos una matríz con los productos a ser evaluados (todos en la columna 0, solo varía la fila)

$matrizDatos[0][0] = "Coca Cola";
$matrizDatos[1][0] = "Pepsi";
$matrizDatos[2][0] = "Sprite";
$matrizDatos[3][0] = "Fanta";

Ahora cargamos la matríz con los valores (total dinero obtenido) de cada año.
Columna 1 = Año 1
Columna 2 = Año 2
Columna 3 = Año 3

$matrizDatos[0][1] = 4500;
$matrizDatos[1][1] = 3500;
$matrizDatos[2][1] = 7875;
$matrizDatos[3][1] = 7756;
// En la columna 2 cargo los valores del año2
$matrizDatos[0][2] = 4758;
$matrizDatos[1][2] = 4230;
$matrizDatos[2][2] = 6600;
$matrizDatos[3][2] = 8300;
// En la columna 3 cargo los valores del año3
$matrizDatos[0][3] = 5267;
$matrizDatos[1][3] = 4800;
$matrizDatos[2][3] = 9500;
$matrizDatos[3][3] = 8700;

Comienza el armado del string que me servirá para pasar de parámetro para graficar.
Este es el string categorías. Aquí irán los nombres de los productos (las gaseosas).

$strDatosAnio1 = "<dataset seriesName='Anio 1'>";
$strDatosAnio2 = "<dataset seriesName='Anio 2'>";
$strDatosAnio3 = "<dataset seriesName='Anio 3'>";

El siguiente paso, es unos de los más importantes. Consiste en el volcado de los valores a las variables.
Recuerden que la columna 0 correspondía a los productos, la columna 1 al Año1, etc.
Recorro la matríz y paso sus valores a un arreglo unidimensional.

foreach($matrizDatos as $arrayDatos)
{
	// En la posición 0 tengo las categorías (gaseosas)
    $strCategorias .= "<category name='" . $arrayDatos[0] . "' />";
    // en las siguientes posiciones tengo los valores.
    $strDatosAnio1 .= "<set value='" . $arrayDatos[1] . "' />";
    $strDatosAnio2 .= "<set value='" . $arrayDatos[2] . "' />";
    $strDatosAnio3 .= "<set value='" . $arrayDatos[3] . "' />";
}

Ahora nos queda cerrar las etiquetas de cada variable string.

$strCategorias .= "</categories>";
// cierro las etiquetas dataset
$strDatosAnio1 .= "</dataset>";
$strDatosAnio2 .= "</dataset>";
$strDatosAnio3 .= "</dataset>";

Creo una última variable ($strXML), a la cual le asignaré los parámetros generales para el gráfico.
caption: Título del gráfico.
numberPrefix: Unidad en que serán expresados los valores (en este caso en $).
rotateValues: Para que los valores ($) tengan una posición en 90º en las barras.
yAxisName: leyenda del eje Y.

// Paso los parámetros generales para el gráfico.
$strXML = "<chart caption='Entrada de dinero por gaseosas' numberPrefix='$' rotateValues='1' yAxisName='Recaudado $ (1k = 1.000)'>";

El siguiente paso es concatenar todas las variables strings usadas ($strCategorias, $strDatosAnio1, etc.) en $strXML, y luego cierro la etiqueta Chart.

// concateno todos los string en uno solo
$strXML .= $strCategorias . $strDatosAnio1 . $strDatosAnio2 . $strDatosAnio3;
// cierro la etiqueta chart
$strXML .="</chart>";

Finalmente, imprimo el gráfico, pasándole como parámetro el string $strXML.

echo renderChartHTML("graficos_swf/MSColumn3D.swf", "", $strXML, "ventas", 600, 500, false, false);

Ejemplo | Descarga el Ejemplo

También te puede Interesar

¿Disfrutaste esta entrada? Por qué no dejas un comentario abajo y continúas la conversación, o te suscribes a mi feed y obtienes artículos como este enviados a tu lector de feeds.

Comentarios

ahh y gracias de antemano amigo…de lo mejor tus ejemplos

Realize mis pruebas y me fui por el camino de la matriz, consulte los datos los coloque en la matriz y luego segui tu ejemplo, me salieron muy bien al principio, espero que continue asi sin importar la escalabilidad de los datos, gracias viejo

Gráficos estadisticos Multiseries…

Tutorial de como realizar gráficos estadisticos Multiseries con PHP y FusionCharts….

oye me podrias pasar el cogido fuente de graficas multiseries pero para pascal??

mi correo las_cartas_9@hot…

Estimado.

¿ Es posible agregar un link a cada serie como en el ejemplo maestro-detalle?.

De poder se que se puede, pero no puedo implementar.

Hay un ejemplo en este link http://www.fusioncharts.com/Demos/Blueprint/

Phpero ese ejemplo que mostras es lo mismo que este: http://micodigobeta.com.ar/?p=134

Se crea una variable llamada $linkAnio1:

$linkAnio1 = urlencode(“\”javascript:detalleAnios(‘Anio 1′, ’210′, ’100′);\”");

Allí llamo a la función javascript “detalleAnios” y le paso los parámetros. Cuidado con esto, debe ir tal cual, con las barras y comillas en sus respectivos lugares, sino no funciona nada.

Luego en la variable $strXml indico ese link:

$strXML .= “”;

Con eso debería funcionar.

Me funciono :D .

Muchas gracias nuevamente por tu ayuda.

tu pagina es re buena gracias por dejar esos graficos que te ayudan muchisimo te lo agradesco soy estudiante de ingenieria de sistemas, he una consulta como haces para que el grafico nos salga directamente de la base de datos.

jhon Blas: Para eso deberías tomar los parámetros directamente desde allí, la Base de Datos.

Por ejemplo:

1 – Consulta a la Base de Datos, consulta Sql.
2 – Obtienes los datos necesarios, por ejemplo: $vendedor, $total
3 – Asignas esos parámetros al gráfico.

set label=$vendedor value=$total

Diego, yo de nuevo, con este tipo de gráficos he tenido problemas, dado que al armar la matriz, me muestra en una ubicación de columna (ej. Columna cocacola) todos los valores de todas las series… cómo habría que hacerlo para trabajar con variables, dentro de un while?

preguntón: realizar esta clase de gráficos es complicado, pero con paciencia y calma lo vas a poder hacer.
Sobre lo que me escribís, quizás el problema esté en los índices. Tenés también el código fuente al final del tutorial para descargarlo y ver en donde puede estar tu error.

Sobre como trabajar con while: por ahora no tuve la necesidad de hacer este tipo de gráfico, pero podrías enviarme un código de ejemplo y veo si te puedo ayudar.

A mi me sale invalid xml data, alguien sabe porqué?

hola como puedo generar 2 graficas detalle de una grafica maestra?

te agradezco mucho la ayuda

Hola Armas.
El ejemplo que pides lo tenes acá:

http://micodigobeta.com.ar/?p=134

Gracias Diego, el ejemplo que mencionas ya lo realice con anterioridad y me funciona de maravilla el problema es cuando quiero generar 2 graficas como resultado de la grafica maestro

Hola Armas.

Fijate en este ejemplo y descarga el codifgo fuente: http://micodigobeta.com.ar/?p=134

Para generar 2 gráficos resultantes del gráfico maestro solo debes agregar un div más en el archivo “contenedores_divs.php”.
Tienes un div llamado “maestro_chart” y otro “detalle_chart”. Entonces agrega otro con nombre “detalle2_chart”.

En el directorio “graficos” tienes que crear el archivo “grafico3.php”, que es el que graficará el otro detalle.

Luego en javascript solo tienes que hacer referencia a ese div para graficarlo.

Espero que te sirva la guía. Más de eso no te puedo ayudar.
Saludos.
Luego

Deja un Comentario

(requerido)

(requerido)