Foros del Web » Programando para Internet » PHP »

Grafica de barras (sin jpgraph o similares)

Estas en el tema de Grafica de barras (sin jpgraph o similares) en el foro de PHP en Foros del Web. hola, que tal. Necesito su ayuda, no llevo mucho trabajando ocn PHP y me pidieron que realizara un sistema que mostrara los resultados en tablas ...
  #1 (permalink)  
Antiguo 12/06/2010, 13:35
Avatar de SymarCs  
Fecha de Ingreso: abril-2010
Mensajes: 67
Antigüedad: 14 años, 8 meses
Puntos: 1
Grafica de barras (sin jpgraph o similares)

hola, que tal.

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).

Etiquetas: barras, jpgraph, similares, gráficos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 02:30.