viernes, 31 de julio de 2009

pChart :: Gráficos estadísticos con Php


Les presento una clase en php muy útil.
Se trata de pChart, una clase que permite generar gráficos estadísticos totalmente profesionales como: lineas, barras, pastel y muchos y más.

En este tutorial veremos como hacer un gráfico de pastel.
Primero, debemos descargar los archivos de la clase: http://pchart.sourceforge.net/download.php

Descargamos la última versión, que en estos momentos es pChart 1.27
De todas las carpetas del comprimido usaremos estas:
  • pChart: es la que contiene las clases
  • Fonts: es la que contiene algunos tipos de letra que vamos a usar.
Empezamos incluyendo las clases en nuestro php:

<?php
//incluimos las clases:
include("pChart.class");
include("pData.class");

La clase pCache.class no la necesitamos para este ejemplo
Ahora, vamos a definir los datos que queremos que se muestren en nuestro gráfico:

// Defininos los datos
$Datos = new pData;
$Datos->AddPoint(array(10,2,3,5,3),"Serie1");
$Datos->AddPoint(array("Ene","Feb","Mar","Abr","May"),"Serie2");
$Datos->AddAllSeries();
$Datos->SetAbsciseLabelSerie("Serie2");

Aquí hemos creado un objeto pData, y empezamos añadiendo los datos en arrays, la serie uno es la que tendrá la cantidad con la que se rellenará el pastel, y la serie 2 indica a que se refiere cada cantidad.

Ahora, iniciamos el gráfico:

// Iniciamos el gráfico
$Pastel = new pChart(380,200);
$Pastel->drawFilledRoundedRectangle(7,7,373,193,5,240,240,240);
$Pastel->drawRoundedRectangle(5,5,375,195,5,230,230,230);


Aquí hemos creado un gráfico de 380 x 200 pixeles y le hemos puesto un fondo agradable.
Casi para terminar, vamos a poner los datos en el gráfico:

// Dibujamos los datos
$Pastel->setFontProperties("Fonts/tahoma.ttf",8);
$Pastel->drawPieGraph($Datos->GetData(),$Datos->GetDataDescription(),150,90,110,PIE_PERCENTAGE,TRUE,50,20,5);
$Pastel->drawPieLegend(310,15,$Datos->GetData(),$Datos->GetDataDescription(),250,250,250);

Aquí hemos definido el tipo de letra que se va a usar, que será tahoma.ttf y el tamaño, 8.
Luego dibujamos el pastel, le indicamos que datos va a usar, la posicion, el tamaño y el color.
Después, dibujamos la "leyenda", que es la Serie 2.
Y por último, podemos decidir si "guardar la imagen" o "mostrar la imagen".
Para guardarla ponemos:

$Pastel->Render("grafico.png");

En donde "grafico.png" es el nombre o direccion de la imagen a guardar.
Y si queremos mostrarla, simplemente ponemos:

$Pastel->Stroke();

Y listo, tenemos nuestro gráfico estadístico de pastel con php.
Para terminar con este Post les dejo un comprimido con los archivos de este ejemplo incluyendo las clases y la fuente:


El diseño de la página de descargas aún no lo termino :P

Para la próxima entrega, veremos como hacer gráficos de barras usando esta clase.
Te gustó este aporte? Deja un comentario, es lo que me anima seguir publicando :)

11 comentarios:

  1. como puedo colocar un label en el grafico, para saber que pedazo pertenece a quer dato, ya que se puede imprimir este archivo en blanco y negro, no habria forma para identificarlo, me entiende? espero me puedas ayudar, gracias

    ResponderEliminar
  2. Puedes hacerlo de la siguiente forma:
    $Test->setFontProperties("Fonts/tahoma.ttf",8);
    $Test->setLabel($DataSet->GetData(),$DataSet->GetDataDescription(),"Serie1","0","Enero",221,230,174);

    La parte que dice setLabel Hace lo que tu quieres, tendrias que repetir eso para cada label que quieras y adecuarlo correctamente.

    ResponderEliminar
  3. todo funciona perfecto en mi servidor local, pero al subirlo no crea los graficos y no da ningun tipo de error.

    seguramente estoy haciendo algo mal, que sera???

    ResponderEliminar
  4. ayuda!!! no funcionan los extraigo en appserver dentro de una carpeta y me muestra los ejemplos pero al darle clic estos no aparecen no se pasa, intente colcoarlso fuera de la carpeta pero dentro de www y nada tampoco me muestra la imagen, no se por q o hay q activar algo? ayuda por favor!!!

    ResponderEliminar
    Respuestas
    1. Es que en el archivo que se descomprime talta la ultima linea $Pastel->Stroke(); aumentale y ya funciona

      Eliminar
  5. Muchas gracias, por la explicacion muy entendible, estoy comenzando a utilizar esta libreria..

    ResponderEliminar
  6. Muy buena explicación, simple y rapida, le ejemplo corre de lujo, gracias

    ResponderEliminar
  7. como puedo hacer para graficar estadisticas de una base de datos?

    ResponderEliminar
  8. y donde pego esas clases , alguien me podria ayudar porfa, y q mas se tienes q hacer ?

    ResponderEliminar
  9. no funciona, que tiene que tener activado el servidor?

    ResponderEliminar