Gráficos con PHP y Google Charts

Google Charts es un API de Google que permite crear gráficos estadísticos de manera sencilla, estos gráficos se pueden crear accediendo a un URL con los parámetros adecuados. Entre los gráficos disponibles se encuentran: Line chart, Sparkline, Bar chart, Pie chart, Venn diagram, Scatter plot, Radar chart, Map, Google-o-meter, QR codes.

Por ejemplo podríamos crear un gráfico del tipo Pie en 3D con dos valores tendríamos un URL de la forma: http://chart.apis.google.com/chart?cht=p3&chd=t:60,40&chs=300x120&chl=Hombres|Mujeres

Google Charts con PHP
Para facilitarnos el proceso de crear estos gráficos existe la clase googchart escrita en PHP 5, el cual brinda una serie de métodos para generar gráficos estadísticos complejos con lineas de código sencillas.

Para utilizar esta clase primero descargamos la librería y copiamos el archivo GoogChart.class.php el cual contiene la clase que necesitamos, luego incluimos este archivo al inicio de nuestros scripts.

  1. include('GoogChart.class.php');
  2. $chart = new GoogChart();

A continuación creamos un array con los datos que deseamos graficar, el siguiente paso es crear el array con los colores a utilizar y finalmente utilizamos el método setChartAttrs donde pasamos como parámetros el tipo de gráfico, el titulo, un array con los datos a graficar, las dimensiones del gráfico y finalmente un array con los colores a utilizar en el gráfico.

  1. $data = array(
  2.             'IE7' => 22,
  3.             'IE6' => 30.7,
  4.             'IE5' => 1.7,
  5.             'Firefox' => 36.5,
  6.             'Mozilla' => 1.1,
  7.             'Safari' => 2,
  8.             'Opera' => 1.4,
  9.         );
  10. $color = array(
  11.             '#99C754',
  12.             '#54C7C5',
  13.             '#999999',
  14.         );
  15. $chart->setChartAttrs( array(
  16.             'type' => 'pie',
  17.             'title' => 'Browser market 2008',
  18.             'data' => $data,
  19.             'size' => array( 400, 300 ),
  20.             'color' => $color
  21.     ));

Finalmente mostramos la imagen imprimiendo la variable $chart y generaremos la imagen deseada como se muestra a continuación.

pie-chart

Ahora si por ejemplo deseamos crear un gráfico de barras comparando dos valores, creamos primero un array multi-dimensional con los valores que deseamos graficar y al momento de crear el gráfico seleccionamos el tipo bar-vertical tendríamos el siguiente ejemplo:

  1. include('GoogChart.class.php');
  2. $chart = new GoogChart();
  3.  
  4. $data = array(
  5.         'February 2008' => array (
  6.             'IE7' => 22,
  7.             'IE6' => 30.7,
  8.             'IE5' => 1.7,
  9.             'Firefox' => 36.5,
  10.             'Mozilla' => 1.1,
  11.             'Safari' => 2,
  12.             'Opera' => 1.4,
  13.         ),
  14.         'January 2008' => array (
  15.             'IE7' => 22,
  16.             'IE6' => 30.7,
  17.             'IE5' => 1.7,
  18.             'Firefox' => 36.5,
  19.             'Mozilla' => 1.1,
  20.             'Safari' => 2,
  21.             'Opera' => 1.4,
  22.         ),
  23.     );
  24. $color = array(
  25.             '#99C754',
  26.             '#54C7C5',
  27.             '#999999',
  28.         );
  29. $chart->setChartAttrs( array(
  30.             'type' => 'bar-vertical',
  31.             'title' => 'Browser market 2008',
  32.             'data' => $data,
  33.             'size' => array( 550, 300 ),
  34.             'color' => $color,
  35.             'labelsXY' => true,
  36.     ));
  37. echo $chart;

Con lo cual obtenemos el gráfico de barras comparativo de dos tipos de datos como se muestra a continuación.

bar-chart

Como pueden ver los resultados son de muy buena calidad y el código para la creación es muy sencilla. Además al utilizar Google Charts API es que el procesamiento se hace en los servidores de Google con lo cual ahorramos capacidad de procesamiento en nuestros servidores.

Para una lista completa de los tipos de gráficos disponibles pueden leer Chart Types o también pueden leer la documentación completa en Developer's Guide.

Posts Relacionados

Comentarios Total 7 comentarios


Bleyder
Publicado: 14/10/2009 7:44 am

Muy interesante la información. Estoy seguro que le encontraré aplicaciones muy prácticas.


[...] This post was mentioned on Twitter by XanelaWeb, Miguel Monroy. Miguel Monroy said: Gráficos con PHP y Google Charts http://sn.im/sia5t [...]

Jorge
Publicado: 14/10/2009 12:14 pm

¿Qué tipo de gráficos se pueden encontrar en esa clase?

Saludos

Muy inbteresante

caos30
Publicado: 14/10/2009 12:29 pm

Oye, bueníiiiiisimo!
Yo llevo años trabajando con otra librería PHP que no está nada mal. Pero lo que me ha encantado es la idea de la API por GET !!!! ey… eso está genial!

Probablemente me descargue la clase GoogChart y le monte una API para mí en mi servidor, a la que le voy a añadir un sistema básico de caché, de tal forma que cada vez que reciba una petición mirará si ya se pidió antes ese gráfico para no hacer el trabajo 2 veces :))

Saludos!
SERGI

PD: me encanta tu blog y tus artículos. Principalmente porque escribes solamente cuando tienes algo novedoso que aportar, y lo haces con mucha claridad y ejemplos. Yo intento lo mismo, pero aún no me sale como a ti :P


[...] Visit link: Gráficos con PHP y Google Charts [...]

Toolszigfrit
Publicado: 21/12/2009 4:58 pm

Unijimpe as trabajado con pchart

Damaso
Publicado: 24/12/2009 12:55 am

Al parecer esta muy bueno esto, ¿¿¿¿pero funciona con registros llamados desde una base de datos??????????
si es asi como se podria mas o menos, es que tengo que implementar unos reportes que tienen que tener graficos.
ademas una pregunta ustedes saben como pasar una imagen de php a ecxel??
por ejemplo con un echo(“”); pasarle esta imagen junto con los demas datos a un buffer.

 

Comentar

En este blog los comentarios están moderados, no aparecerán inmediatamente en la página al ser enviados. Por favor, evita los comentarios ofensivos u obscenos por que no serán aprobados.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)