Necesito su ayuda, no llevo mucho trabajando ocn PHP y me pidieron que realizara un sistema que mostrara los resultados en tablas y graficos. Con las tablas no tengo problemas pero con las graficas si.
Me podrian dar un ejemplo de como crearlas??? por favor, lo primero que hice fue usar la libreria jpgraph pero como el sistema sera de uso comercial tendriamos que comprar la licencia y es lo que no queremos (aumetar costos).
Me encontre con un pequeño script que genera graficos es muy basico pero me esta ayudando a utilizarar la libreria GD de PHP, lo adecua a mis necesitades y lo tengo asi.
Código PHP:
<?php
$datay = array(2,3,-5,5,3);//datos
$barras = count($datay);//total de barras
//Ancho y Alto de la imagen
$width = 250;
$height = 150;
$espacio = 5; //separacion entre barras
//ancho de las barras
$barras_width = $width / $barras ;
//[b]$mas = 160;[/b]
$im = imagecreate($width,$height[b]/*+$mas*/[/b]);//se crea imagen
$lime = imagecolorallocate ($im,154,205,50);
$gray_lite = imagecolorallocate ($im,0xee,0xee,0xee);
$gray_dark = imagecolorallocate ($im,0x7f,0x7f,0x7f);
$white = imagecolorallocate ($im,0xff,0xff,0xff);
//color de fondo de la imagen (gris)
imagefilledrectangle($im,0,0,$width,$height[b]/*+$mas*/[/b],$gray_lite);
//Obtener el valor maximo de todo el arreglo de datos
$maxv = 0;
for($i=0;$i<$barras;$i++)
$maxv = max($datay[$i],$maxv);
//generar cada barra y mostrala en pantalla
for($i=0;$i<$barras;$i++){
$barras_height = ($height / 100) * (( $datay[$i] / $maxv) *100);
$x1 = ($i)*$barras_width; //coordenada X del punto 1
$y1 = $height-$barras_height; //coordenada Y del punto 1
$x2 = (($i+1)*$barras_width)-$espacio; //coordenada X del punto 2
$y2 = $height; //coordenada Y del punto 2
//se rrellenan las barras con un fondo color verde limon
imagefilledrectangle($im,$x1,$y1,$x2,$y2,$lime);
}
header ("Content-type: image/png");//cabecera para generar la imagen (PNG)
imagepng($im);
imagedestroy($im);//se libera la memoria utilizada por la imagen
?>
Funciona perfectamente con valores positivos, pero cuando se introducen valores negativos no se grafican (o no se greficaban). Para graficarlos se aumenta la altura (descomentando lo de negritas) pero necesito hacerlo automatico que grafique tanto valores positivos como negativos.
Asi es como se ve la grafica, es algo sencilla pero me esta ayudando.
SIN aumentar altura.
CON aumeto de altura.
Alguna idea de como realizar las graficas con la libreria GD o sin ella pero sin librerias con licencias, por que estar aumentando los tamaños no seria la opcion final ya que tendria graficas de distintos tamaños.
Otra cosa es como mostrar los ejes X , Y (valores como en excel).