sábado, 1 de agosto de 2009

Gráfico de barras con php y pChart

En el post anterior pChart::Gráficos estadísticos con php hicimos una pequeña introducción a pChart y un tutorial para crea un gráfico tipo pastel.
En esta ocación vamos a crear un gráfico de barras usando esta clase.
Usaremos los archivos de la clase que descargamos del post anteior, si no los tienes aquí está el enlace para descargarlos:http://pchart.sourceforge.net/download.php
Para este ejemplo crearemos una gráfico que muestre las notas de Carlos, Pedro y Juan en los 6 primeros meses del año.
Entonces empezamos incluyendo las clases en nuestro php:

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

Ahora, definimos los datos que vamos a mostrar, vamos a crear 4 arrays, los primeros 3 son las notas, y el último es el que contendrá los meses:

// Definimos lo datos
$Datos = new pData;
$Datos->AddPoint(array(8,7,8,9,10,5),"Carlos");
$Datos->AddPoint(array(4,2,4,5,10,6),"Pedro");
$Datos->AddPoint(array(6,1,2,1,4,2),"Juan");
$Datos->AddPoint(array("Enero","Febrero","Marzo","Abril","Mayo","Junio"),"Meses");


Ahora, debemos indicarle qué tipo de datos son, pues los primeros tres son los datos para las estadísticas y el último es el eje x (horizontal).

$Datos->AddSerie("Carlos");
$Datos->AddSerie("Pedro");
$Datos->AddSerie("Juan");
$Datos->SetAbsciseLabelSerie("Meses");

Ahora, iniciamos el gráfico:

// Iniciamos el gráfico:
$Test = new pChart(620,230);
$Test->setFontProperties("Fonts/tahoma.ttf",8);
$Test->setGraphArea(50,30,600,200);
$Test->drawFilledRoundedRectangle(7,7,616,223,5,240,240,240);
$Test->drawRoundedRectangle(5,5,618,225,5,230,230,230);
$Test->drawGraphArea(255,255,255,TRUE);
$Test->drawScale($Datos->GetData(),$Datos->GetDataDescription(),SCALE_NORMAL,150,150,150,TRUE,0,2,TRUE);
$Test->drawGrid(4,TRUE,230,230,230,50);

Aquí creamos un gráfico de 620 x 230 px, definimos el tipo de letra a usar y dibujamos un fondo agradable, y dibujamos el área de gráfico también. Hasta aquí si mostraramos la imagen tendríamos el sigueinte resultado:


Colores en pChart

Los colores en pChart se pueden definir de 2 formas: por paleta de colores o individualmente.
Paleta de colores: se usa un grupo de colores definidos para las barras.
Individualmente: le declaramos el color a cada una de las barras.
Vamos a usar la segunda opción, entonces, declaramos los colores para las barras de Carlos, Pedro y Juan:

//Definimos colores de las barras
$Test->setColorPalette(0,255,153,51);
$Test->setColorPalette(1,0,204,0);
$Test->setColorPalette(2,51,204,204);


setColorPalette se usa para declarar un color individualmente, tiene 4 valores, el primero es el nivel del array, osea si vamos a declarar el valor al primer array el nivel es 0; y los otros tres son el color el formato RGB.
Ahora solo falta dibujar las barras, la leyenda y el título:

// Dibujamos las barras
$Test->drawBarGraph($Datos->GetData(),$Datos->GetDataDescription(),TRUE);

// Dibujamos la leyenda
$Test->setFontProperties("Fonts/tahoma.ttf",8);
$Test->drawLegend(545,25,$Datos->GetDataDescription(),192,192,192);

//Dibujamos el título
$Test->setFontProperties("Fonts/tahoma.ttf",10);
$Test->drawTitle(50,22,"Notas de Matemática",50,50,50,585);
$Test->Stroke();

Y listo tenemos nuestro gráfico de barras. Para terminar les dejo un comprimido con los archivos de este tutorial incluidas las clases y la fuente:

Para la siguiente entrega, haremos un gráfico lineal utilizando pChart, y veremos una nueva caracteristica de esta clase.
Te ha gustado este aporte? Deja un comentario, es lo único que me anima a seguir publicando :)

8 comentarios:

  1. como puedo hacer para que los meses salgan en forma vertical???

    gracias

    mail: 2h.oscar@gmail.com

    ResponderEliminar
  2. yo tambien querria saber como colocar los datos del eje x en forma vertical - gracias

    ResponderEliminar
  3. bien explicado, yo q apenas empeze con esto, no sabia ni ma... pero con esto como q me doy una idea de como es, deberias de explicar, de crear una grafica, pero ya extrallendo los datos de mysql. ese seria un gran aporte, espero y si lo hagas, sigue asi animo

    ResponderEliminar
  4. hola yo tambien estoy trabajando con la libreria pero al utilizar ajax me sale un error de simbolos extraños.

    haz utilizado esta libreria con Ajax

    ResponderEliminar
  5. PORQUE NO SE PUEDE INCLUIR EN OTRO ARCHIVO PHP?

    ResponderEliminar
  6. Hola buen aporte.. tendrias un manual o donde podriamos conseguirlo para conocer mejor y aprovechar las caracteristicas de este graficador.. saludos

    ResponderEliminar