Open Flash Chart

Open Flash Chart es un componente de código abierto (Open Source) liberado bajo licencia GPL que te permitirá hacer unas gráficas bastante elegantes dentro de tus aplicaciones en PHP. También es posible utilizar el componente desde Python, Perl y Ruby On Rails. Para este tutorial haremos uso de la versión Open Flash Chart 1.9.5, que podrás descargar desde su sitio web. Resaltar que este tutorial está basado en uno de los tutoriales que podréis encontrar en su web.

[Actualizado el 27 de Noviembre de 2007: Se ha añadido un ejemplo de gráfica a partir de datos de una base de datos MySQL]

Paso 1 – Instalación de ficheros

Descarga y descomprime el contenido del fichero .zip, en mi caso open-flash-chart-1.9.5.zip, y distribuye los ficheros de la siguiente forma:

  • Copia todos los ficheros a la carpeta raíz de tu sitio web.
  • Comprueba que el fichero open-flash-chart.swf está en la carpeta raíz de tu sitio web. En caso de necesitarlo, establece los permisos para estos ficheros de forma que el servidor web pueda acceder a ellos.

Nota: Al final del tutorial se muestra como modificar la ruta de los distintos ficheros.

Consejo: Intenta mantener las rutas lo más simples posible y cuando termines el tutorial mueve los ficheros a otra ubicación más adecuada. Esto te ayudará a encontrar errores debidos a rutas incorrectas.

Paso 2 – El Código

Comenzaremos creando un nuevo fichero .php en el que mostraremos una simple página “Hola Mundo”. Para ello copia el siguiente texto en el fichero y guárdalo como chart.php:

<html>
<head>
</head>
<body>
<?php
echo ‘Hola Mundo!’;
?>
</body>
</html>

Prueba la página abriéndola en tu navegador habitual: http://tu.sitio.web.com/chart.php, o como en mi caso http://localhost/chart.php, puesto que tengo un servidor local para las pruebas.

Cuando hayas comprobado que el paso anterior funciona, sustituye el código php (<?php … ?>) por el que se cita a continuación:

<?php
// Código que crea el objeto Flash
include_once ‘php-ofc-library/open_flash_chart_object.php’;
open_flash_chart_object( 500, 250, ‘http://’.
$_SERVER['SERVER_NAME'] .’/chart-data.php’, false );
?>

Esto establecerá los parámetros de altura y de anchura del Flash resultante así como la URL del fichero de datos. De momento ignóralos, guarda el fichero y pruébalo en tu navegador. En mi caso solo muestra la ruta del fichero de datos. Para ver que todo está correcto abre el código fuente de la página y comprueba que contenga algo parecido a esto:

<object classid=”clsid:d27cdb6e-ae6d-11cf-96b8-444553540000″
codebase=”http://fpdownload.macromedia.com/pub/shockwave/
cabs/flash/swflash.cab#version=8,0,0,0″
width=”400″ height=”300″ id=”graph-2″ align=”middle”>
<param name=”allowScriptAccess” value=”sameDomain” />
<param name=”movie” value=”open-flash-chart.swf?width=500&
height=250&data=http://teethgrinder.co.uk/open-flash-chart/
data-2.php”/><param name=”quality” value=”high” />
<param name=”bgcolor” value=”#FFFFFF” /> <embed src=
“open-flash-chart.swf?width=500&height=250&data=
http://teethgrinder.co.uk/open-flash-chart/data-2.php”
quality=”high” bgcolor=”#FFFFFF” width=”500″ height=”250″
name=”open-flash-chart” align=”middle” allowScriptAccess=
“sameDomain” type=”application/x-shockwave-flash”
pluginspage=”http://www.macromedia.com/go/getflashplayer” />
</object>

Paso 3 – El fichero de datos

El funcionamiento de Open Flash Chart es sencillo, primero descarga el fichero de datos, lo lee y después lo muestra como una gráfica. El fichero de datos tiene un formato específico muy sencillo, que nos posibilita escribirlo a mano. En este caso lo generaremos con la ayuda de PHP.

Para ello vas a crear un nuevo fichero en la carpeta raíz de tu sitio web con el siguiente contenido:

<?php
// generate some random data:
srand((double)microtime()*1000000);
$max = 50;
$data = array();
for( $i=0; $i<12; $i++ )
{
$data[] = rand(0,$max);
}
// use the chart class to build the chart:
include_once( ‘php-ofc-library/open-flash-chart.php’ );
$g = new graph();

// Spoon sales, March 2007
$g->title( ‘Spoon sales ‘. date(“Y”), ‘{font-size: 26px;}’ );
$g->set_data( $data );
// label each point with its value
$g->set_x_labels( array(‘Jan’,'Feb’,'Mar’,'Apr’,'May’,'Jun’,'Jul’,
‘Aug’,'Sep’,'Oct’,'Nov’,'Dec’ ) );
// set the Y max
$g->set_y_max( 60 );
// label every 20 (0,20,40,60)
$g->y_label_steps( 6 );
// display the data
echo $g->render();
?>

Guárdalo como generate-data.php y prueba a abrirlo en tu navegador. Deberías obtener un texto como el siguiente:

&title=Spoon sales 2007,{font-size: 26px;}&
&x_axis_steps=1& &y_ticks=5,10,6&
&line=3,#87421F&
&values=19,19,0,35,45,1,21,0,27,33,45,3&
&x_labels=Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec&
&y_min=0& &y_max=60&

Este es el formato en el que hay que pasarle los datos a Open Flash Chart, así que copia este texto y pégalo en un fichero nuevo, al que nombrarás como chart-data.php. Como podrás observar este nombre de fichero es el que utilizamos anteriormente en la funcion que creaba el objeto en Flash.

open_flash_chart_object( 500, 250, ‘http://’.
$_SERVER['SERVER_NAME'] .’/chart-data.php’, false );

Si todo es correcto al abrir esta primera página que creaste (http://tu.sitio.web.com/chart.php) deberías ver una gráfica con el título ‘Spoon sales’.

Por supuesto podrás mover los ficheros a otra carpeta dentro de tu sitio web, para lo que tendrás que tener en cuenta lo siguiente:
  • Modificar la declaracion include_once en tu codigo php.
  • Modificar el parámetro URL pasado a la función open_flash_chart_object para reflejar la nueva ruta.
  • Modificar las líneas de código del fichero php-ofc-library/open_flash_chart_object.php para modificar la ruta base de la cual se obtiene el fichero open-flash-chart.swf

Podrás encontrar más información y ejemplos de uso de Open Flash Chart en su sitio web.

Ejemplo de gráfica a partir de datos de una base de datos MySQL

[Añadido el 27 de Noviembre de 2007, a petición de un lector]

En primer lugar vamos a crear un fichero al que denominaremos datafromdb.php con el contenido que se detalla a continuación:

<?php
// PASO 1 – Obtención de los datos desde una
// base de datos MySQL
// Abre la base de datos
// Tendrás que adaptar los parametros pasado
// a mysql_connect y a
// mysql_select_db a los de tu servidor y
// base de datos
$db = mysql_connect(“localhost”, “root”,”")
or die(“Imposible conectar a la base de datos”);

mysql_select_db(“ofctest”, $db)
or die(“Imposible consultar la base de datos”);

// Consulta la tabla
$res = mysql_query(“select * from datospie”,$db)
or die(“Sentencia SQL incorrecta”);
$data = array();
$labels= array();
// Itera sobre el resultado de la consulta para
// obtener los campos que necesitamos para
// generar la gráfica
while( $row = mysql_fetch_array($res) ){
// Añade los valores de cada fila al array de
// datos que le pasaremos a Open Flash Chart
$data[] =$row[2];

// Añade las etiquetas de cada fila al array de
// etiquetas que le pasaremos a Open Flash Chart
$labels[] =$row[1];
}
// Cerramos la conexión con la base de datos
mysql_close($db);

// PASO 2 – Creacion de la grafica
// Creamos el objeto Gráfica
include_once( ‘php-ofc-library/open-flash-chart.php’ );
$g = new graph();

// Gráfica con 60% de transparencia
$g->pie(60,’#505050′,’#000000′);

// Le pasamos 2 arrays, uno con los datos y otro
// con las etiquetas
$g->pie_values( $data, $labels );

// Se asigna los colores para los datos
$g->pie_slice_colours(
array(‘#d01f3c’,'#356aa0′,’#C79810′) );
$g->set_tool_tip( ‘#val#%25′ );
$g->title( ‘Grafica desde BD’,
‘{font-size:18px; color:#d01f3c}’ );

echo $g->render();
?>

Como puedes observar, este código está compuesto de dos apartados. En el primero abrimos la base de datos y realizamos una consulta de los datos apropiados, los cuales almacenaremos en arrays. Posteriormente pasaremos estos arrays a las funciones de creación de la gráfica para generar el gráfico adecuado.

Solo nos queda llamar a la función open_flash_chart_object con los parametros adecuados para dibujar nuestra gráfica:

<html>
<head>
</head>
<body>
<?php
// Código que crea el objeto Flash
include_once ‘php-ofc-library/open_flash_chart_object.php’;
open_flash_chart_object( 400, 250,
‘http://’. $_SERVER['SERVER_NAME'] .
‘/proyectos/tutorial-ofc/datafromdbpie.php’, false);
?>
</body>
</html>

Si tienes alguna duda sobre este ejemplo, no lo dudes, dejanos un comentario y te ayudaremos en lo que podamos.





¿Te gusto la entrada? Compartela:

Etiquetas: , ,

23 Responses


  1. Henry on 14 jun 2011

    Amigo,
    necesito un ejemplo de como mostrar los datos de una base de datos con open flash…
    por favor termina el artículo que quedo cortado cuando iniciabas el ejemplo, gracias

    • Migue on 14 jun 2011

      Ya esta completo el articulo; no se muy bien porque pero faltaba un trozo. Perdón por las molestias.

  2. Federico on 28 jun 2011

    Hola, al fin alguien publica lo que necesitaba, nada mas que necesito unas variaciones,
    tengo una tabla con 12 columnas en total, 1 de ellas es mes y la otra resultado, por ejemplo:

    Mes | Resultado
    ———————-
    enero | 98
    febre | 67
    marzo | 89
    etc etc etc tec hasta diciembre, como puedo hacer para que me grafique el mes de marzo por ejemplo y vengan incluidos los meses anteriores para que me muestre la diferencia?
    de ante mano muchas gracias =)

  3. Alejandro on 11 jul 2011

    Hola… estoy haciendo el ejemplo sin conectar a la base de datos pero al momento de mostrar la pagina ésta me sale en blanco… y pues la verdad no he cambiado rutas… lo tengo tal cual… en un servidor local…
    será que tengo que estar conectado a Internet?…

  4. hugo on 24 jul 2011

    Hola he echo el segundo ejemplo de donde se extraen los datos pero tengo un problema en cuanto ala estructura de la tabla , me marca un error al momento de conectarla, si me podrias explicar la estructura que necesita la tabla porfavor :D de antemano agradesco tu tiempo

  5. jorge on 23 ago 2011

    Estimado, mi pregunta es si sabes majejar los decimales del punto cuando pones el mouse sobre el grafico, estoy manejando un volumen importantes de datos en el grafico y decidi poner la hora como decimal de 4 digitos pero solo me muestra 2.

    saludos.

  6. claudia on 25 ago 2011

    me sale este error

    Fatal error: Class ‘graph’ not found in C:\AppServ\www\grafico\chart-data.php on line 16

    que debo modificar??

    • jorge on 30 ago 2011

      claudia ese error pasa cuando no tienes bien dirigidas tus direcciones, revisa donde lo esstas direccionando y en que carpeta se encuentra…

      jmpr al referirse crear un nuevo fichero es crear un nuevo archivo…..

      • claudia on 14 sep 2011

        ya lo vi, tenias razon. muchas gracias

      • Javi on 19 abr 2012

        Yo tengo la ruta bien puesta pero me sigue saliendo el mismo error, alguna otra causa posible?

  7. JMPR on 29 ago 2011

    hola.. no estoy muy familiarizado con las graficas me intereza realizar graficas mandando llamar datos desde una base de datos… y m tope con esta pagina k habla sobre lo k m intereza… descargue el open-flash-chart-1.9.5 y lo copie a una carpeta de mi www del wamp y quise probar haciendo los ejemplos que vienen en este apartado solo k no m queda muy claro a k se refieren con crear un nuevo fichero.php no se como se crea o donde tengo k guardar los documentos para k funcionen.. si tienen k estar en la carpeta donde se decomprimio el open-flash-chart-1.9.5 si me pueden ayudar mil graxias..

    • jorge on 03 oct 2011

      crear fichero = click derecho->nuevo->documento de tento…
      y le cambias la extencion…
      la estructura la das tu….
      saludos.

  8. clau on 20 sep 2011

    tengo otra duda… tengo que pasar unos valores desde un formulario para poder armar el grafico… que me recomiendan que puedo hacer??

    con un include que me rescate esas variables puede ser suficiente??

    • jorge on 03 oct 2011

      tienes que poner tus datos dentro de un array, existen varias formas de pasar esa variable al grafico, depende de como lo estes haciendo o como te acomode mas.
      si queres enviame un mail koke_esco@hotmail.com saludos…..

  9. diego on 28 sep 2011

    buenas tardes me gustaría saber si ustedes tienen la información de como dibujar los datos de una base de datos mysql en una imagen gif con ayuda de php

  10. clau on 06 oct 2011

    hay alguna forma de “reformatear” los numeros?? tengo resultados con miles (123,456), y los quiero con punto (123.456)

  11. Lui on 14 oct 2011

    Quiero que los puntos del eje y me muestre decimales con 12 digitos, como puedo hacer esto? gracias

  12. juanpc on 13 nov 2011

    Primero gracias por tu guía
    Al crear el objeto flash el php dice:
    Failed opening ‘php-ofc-library/open_…. php’ (include_path=’.;C:\php5\pear’)…
    He leido que cambiando en php.ini ‘register_globals’ de off a on se soluciona.
    Pero tras cambiarlo sigue diciendo lo mismo.
    Que tengo que hacer?
    Gracias

    • Mario on 23 nov 2011

      Hola juanpc.
      El problema segun veo es que lo estas clocalndo en un path equivocado. Tine que estar en el path relativo a tu sitio. Por ejemplo si tu aplicacionesta en : http://www.tuWevServer.com/tuAplicacion/ El include debe de ser: include_once ‘php-ofc-library/open…php’

  13. Manuel on 28 nov 2011

    Me parece muy bien este tipo de graficos, tengo dos preguntas:

    1º.- No me gunciona con Internet Explorer

    2º.- Se puede utilizar en vez de una tabla un fichero de texto con numeros?

  14. Reina on 11 abr 2012

    Hay, que problemazo, yo no he logrado hacer ningun grafico como otros, necesito hacer un cuadro de mando integral, para eso necesito hacer graficos que me grafiquen la informacion pero nada ni con el ejemplo, que debo hacer, por favor necesito ayuda

  15. Manuel on 30 abr 2012

    Ya manejo algo este tipo de graficas, pero mi duda es como realizar un grafico de barras apiladas.

    Gracias

    • Reina on 30 abr 2012

      A mi e da que me esta cargando , pero no me sale nada, me pudieras decir de donde eres, por si puedo hacerte alguna pregunta ante cualquier duda


Leave your comment