Open Flash Chart Helper: gráficos al estilo Cake
[Este es un artículo que he escrito en inglés para el Bakery de CakePHP y que traduzco acá para la comunidad en español] Open Flash Chart es una solución interesante para dibujar gráficos a partir de datos en tu aplicación. Este artículo introduce un Helper de CakePHP para hacer la labor de dibujar gráficos más sencilla.
Open Flash Chart es una solución interesante para dibujar gráficos a partir de datos en tu aplicación. Este artículo introduce un Helper de CakePHP para hacer la labor de dibujar gráficos más sencilla.
Requisitos
Para hacer uso de este helper, primero debes descargar el archivo zip de Open Flash Chart desde http://teethgrinder.co.uk/open-flash-chart/download.php.
Dentro hay dos archivos necesarios para usar este helper:
- open-flash-chart.swf coloca este archivo en el directorio [app]/webroot/
- php-ofc-library/open-flash-chart.php coloca este archivo en el directorio [app]/vendors
El Helper:
Para obtener el helper descargalo del repositorio subversion:
svn co http://svn2.assembla.com/svn/cakeopenflashchart/trunk/flash_chart.php
Si no usas svn puedes descargarlo, manualmente, de ese url también
Uso
Ahora, para usar este helper haz como con cualquier otro:
Los siguientes ejemplos están todos colocados en un archivo de vista [app]/views/pages/charts.ctp (por lo tanto debes modificar PagesController para que use el Helper) y generan datos al azar (pero usar una base de datos es igual de fácil).
Ejemplo 1 - Gráficos de Barra
-
<?php
-
// Sets height and width
-
$flashChart->begin(400, 250);
-
// Title
-
$flashChart->title(‘Example 1 - Bars: Hits per Day’);
-
// Configure Grid style and legends
-
$flashChart->configureGrid(
-
’step’ => 1,
-
‘legend’ => ‘Day’
-
),
-
‘legend’ => ‘#Hits’,
-
)
-
)
-
);
-
// Prepare some random data (10 points)
-
for ($i=0; $i < 10; $i++) {
-
}
-
// Register each data set with its information.
-
‘color’ => ‘#afe342′,
-
‘font_size’ => 11,
-
‘data’ => $random_hits,
-
‘graph_style’ => ‘bar’,
-
)
-
);
-
$flashChart->setData($data);
-
-
// Set Ranges in the chart
-
$flashChart->setRange(‘y’, 0, 100);
-
$flashChart->setRange(‘x’, 0, 10);
-
-
// Show the graph
-
?>
Este ejemplo genera un gráfico de barras sencillo con los datos generados al azar en un ciclo. Para generar otro gráfico en la misma vista es importante reiniciar los datos del helper invocando el método FlashChartHelper::begin
Nota: cambia ‘graph_style’ => ‘bar’ a alguno de los siguientes para ver todos los tipos de gráfico de barra disponibles
- ‘graph_style’ => ‘bar_sketch’
- ‘graph_style’ => ‘bar_glass’
- ‘graph_style’ => ‘bar_filled’
- ‘graph_style’ => ‘bar_3D’
- ‘graph_style’ => ‘bar_fade’
Ejemplo 2 - Gráficos de Líneas
Para graficar líneas en vez de barras, el único cambio necesario al ejemplo anterior es sustituir ‘graph_style’ => ‘bar’ por alguno de los siguientes
- ‘graph_style’ => ‘line’
- ‘graph_style’ => ‘line_hollow’
- ‘graph_style’ => ‘line_dot’
-
<?php
-
// Sets height and width
-
$flashChart->begin(400, 250);
-
// Title
-
$flashChart->title(‘Example 2 - Lines: Hits per Day’);
-
// Configure Grid style and legends
-
$flashChart->configureGrid(
-
’step’ => 1,
-
‘legend’ => ‘Day’
-
),
-
‘legend’ => ‘#Hits’,
-
)
-
)
-
);
-
// Prepare some random data (10 points)
-
for ($i=0; $i < 10; $i++) {
-
}
-
// Register each data set with its information.
-
‘color’ => ‘#00aa42′,
-
‘font_size’ => 11,
-
‘data’ => $random_hits,
-
‘graph_style’ => ‘lines’,
-
)
-
);
-
$flashChart->setData($data);
-
-
// Set Ranges in the chart
-
$flashChart->setRange(‘y’, 0, 100);
-
$flashChart->setRange(‘x’, 0, 10);
-
-
// Show the graph
-
?>
Ejemplo 3 - Gráficos de Puntos
Este tipo de gráfico usa una sintaxis diferente para definir los datos a graficar. Requiere que los datos se especifiquen en puntos (pares x,y), aquí está el ejemplo:
-
<?php
-
// Sets height and width
-
$flashChart->begin(400, 250);
-
// Title
-
$flashChart->title(‘Example 3 - Scatter: Some Random Points’);
-
// Configure Grid style and legends
-
$flashChart->configureGrid(
-
’step’ => 1,
-
‘legend’ => ‘Day’
-
),
-
‘legend’ => ‘#Hits’,
-
)
-
)
-
);
-
// Prepare some random data (10 points)
-
for ($i=0; $i < 10; $i++) {
-
// Each point is represented as a pair (x,y)
-
}
-
// Register each data set with its information.
-
‘color’ => ‘#00aa42′,
-
‘font_size’ => 11,
-
‘data’ => $random_points,
-
‘graph_style’ => ’scatter’
-
)
-
);
-
$flashChart->setData($data);
-
-
// Set Ranges in the chart
-
$flashChart->setRange(‘y’, 0, 100);
-
$flashChart->setRange(‘x’, 0, 10);
-
-
// Show the graph
-
?>
Ejemplo 4 - Gráficos de Torta
Este tipo de gráfico también usa una sintaxis distinta, aquí está el ejemplo:
-
<?php
-
$flashChart->begin(400, 250);
-
$flashChart->title(‘Example 4 - Pie Chart: My imaginary Browser Stats’);
-
‘value’ => 30
-
),
-
‘value’ => 7
-
),
-
‘value’ => 38
-
),
-
‘value’ => 25
-
)
-
);
-
$flashChart->pie($browser_data);
-
-
?>
Nota: El Helper de Flash Chart selecciona automáticamente los colores, para cada sección del gráfico, si no los estableces explícitamente.
Ejemplo 5 - Gráficos Mixtos
Open Flash Chart permite varios conjuntos de datos dentro de un mismo gráfico, puedes mezclar gráficos de barras, líneas y puntos, aquí hay un ejemplo que extienden al primer ejemplo presentado:
-
<?php
-
// Sets height and width
-
$flashChart->begin(400, 250);
-
// Title
-
$flashChart->title(‘Example 5 - Mixed: Hits per Day vs. # Visits’);
-
// Configure Grid style and legends
-
$flashChart->configureGrid(
-
’step’ => 1,
-
‘legend’ => ‘Day’
-
),
-
‘legend’ => ‘#Hits’,
-
)
-
)
-
);
-
// Prepare some random data (10 points)
-
for ($i=0; $i < 10; $i++) {
-
}
-
// Register each data set with its information.
-
‘color’ => ‘#afe342′,
-
‘font_size’ => 11,
-
‘data’ => $random_hits2,
-
‘graph_style’ => ‘line_dot’,
-
),
-
‘color’ => ‘#324aef’,
-
‘font_size’ => 11,
-
‘data’ => $visits,
-
‘graph_style’ => ‘bar’,
-
)
-
);
-
$flashChart->setData($data);
-
-
// Set Ranges in the chart
-
$flashChart->setRange(‘y’, 0, 100);
-
$flashChart->setRange(‘x’, 0, 10);
-
-
// Show the graph
-
?>
Resultados
Los resultados de estos ejemplos pueden encontrarlos en http://aikon.com.ve/flashchart/
¿Qué Falta?
En estos momentos, hay dos tipos de gráfico que Open Flash Chart ofrece y que el Helper no implementa:
- High Low Close (??): http://teethgrinder.co.uk/open-flash-chart/gallery-hlc.php
- Candle (gráficos de caja): http://teethgrinder.co.uk/open-flash-chart/gallery-candle.php
Algunas posibles mejoras:
- Escribir funciones de más alto nivel que encapsulen muchas de las líneas usadas en los ejemplos.
- Selección automática de los rangos de los ejes.
Si algo falta
Reportalo: http://trac2.assembla.com/cakeopenflashchart/newticket
Recibe otros artículos como este automáticamente
Suscríbete vía RSS a aikon.com.ve ||
¿Qué es RSS?
Hola, me ha gustado mucho tu helper. Creo que lo usaré en varios proyectos y en mi Tesis.
¿Hay alguna manera de imprimir los Gráficos generados en flash?
Gracias por compartir…
Abril 1, 2008 // 23:59
Hola José.
Parece que es un problema de Flash, al menos en Firefox.
He probado en Safari y Opera en Mac OS X y sí imprime correctamente los gráficos. Parece ser un problema conocido: https://bugs.launchpad.net/firefox/+bug/117036
Abril 2, 2008 // 1:26
[...] Open Flash Chart Helper: gráficos al estilo Cake (tags: cakephp Chart swf Flash) | | | Yahoo!ブックマークに登録 | | | [...]
Abril 2, 2008 // 16:11