Para crear gráficas en php no he encontrado mejor herramienta que jpgraph. Es gratuito si no se usa comercialmente y su uso es muy sencillo.
Tiene muchos tipos de gráficas para representar datos y se instala fácilmente en cualquier servidor: Copiando la carpeta src en el servidor web, renombrándola a jpgraph y luego simplemente enlanzando dentro de nuestro script php las librerías.
Así por ejemplo podemos crear un gráfico simple con unos datos sobre la renta per cápita de distintos países:
Para generar este gráfico hay que seguir estos pasos:
Incluir las librerias (la ruta dependerá de donde las hayamos copiado):
include ("../../jpgraph/jpgraph.php");
include ("../../jpgraph/jpgraph_bar.php");
Creamos dos arrays con los datos que se van a representar (eje x e y):
$datax = array("Alemania", "España", "Francia", "Italia", "Reino Unido");
$datay = array(43267, 22368, 37644, 32949, 39762);
Creamos el objeto del gráfico de un tamaño de 500px * 200px y establecemos que el eje x es texto y el eje y es numérico:
$graph = new Graph(500,200,"auto");
$graph->SetScale("textlin");
Establecemos los márgenes del gráfico y le añadimos una sombra por detrás:
$graph->img->SetMargin(50,100,20,40);
$graph->SetShadow();
Creamos un objeto de gráfica de barras, decimos que su color sea naranja, que se muestre la leyenda y que añada esa gráfica al objeto general.
$barra = new BarPlot($datay);
$barra->SetFillColor("orange");
$barra->SetLegend("Euros");
$graph->Add($barra);
Le añadimos un título al gráfico y otro a uno de los ejes, poniendo ambos en negrita:
$graph->title->Set("Renta per cápita");
$graph->xaxis->title->Set("Países");
$graph->title->SetFont(FF_FONT1,FS_BOLD);
$graph->xaxis->title->SetFont(FF_FONT1,FS_BOLD);
Añadimos el texto del eje x y finalmente lo mostramos:
$graph->xaxis->SetTickLabels($datax);
$graph->Stroke();