Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: inquilin@19 en 11 Noviembre 2011, 17:03 pm



Título: Graficos de barras en php
Publicado por: inquilin@19 en 11 Noviembre 2011, 17:03 pm
Hola a todos, vereis, tengo que hacer un script php con un gráfico de barras horizontales o verticales (como prefiera), he estado mirando las funciones de ImageFilledRectangle para crear las barras pero me las pone todas juntas, he visto que cada valor que damos en el rectángulo tiene que tener un numero determinado para que no se vean, eso lo estoy solucionando pero mi cuestion es, ¿Como puedo hacer para que esas barras tengan aspecto de grafico y ponerlas separadas, 20 pixeles, por ejemplo¿?


Título: Re: Graficos de barras en php
Publicado por: dark_sargon en 13 Noviembre 2011, 05:54 am
Hola inquilin@19 :)
Podrías hacer un plano con lineas, valores y las barras. Para separar las barras 20px debes usar los atributos de la función ImageFilledRectangle() ya que esta recibe dos puntos para gráficar el rectángulo, pronto agregaré un ejemplo en éste tema.


Título: Re: Graficos de barras en php
Publicado por: inquilin@19 en 13 Noviembre 2011, 15:28 pm
Gracias por la información, al final conseguí hacer algo con las barras, aquí tienes el codigo por si te sirve para algo
Código:
<?php
$myImage = ImageCreate(300,300);
$white = ImageColorAllocate($myImage, 255, 255, 255);
$red  = ImageColorAllocate($myImage, 255, 0, 0);
$green = ImageColorAllocate($myImage, 0, 255, 0);
$blue = ImageColorAllocate($myImage, 0, 0, 255);
ImageFilledRectangle($myImage, 70, 180, 100, 10, $blue);
ImageFilledRectangle($myImage, 150, 180, 120, 50, $green);
ImageFilledRectangle($myImage, 200, 180, 170, 75, $red);
header ("Content-type: image/png");
ImagePng($myImage);
ImageDestroy($myImage);
?>
Con esto he conseguido hacer tres barras de colores, con la misma separación, estuve unas dos horas y media para que me saliera esto, asi que lo de que fueran 20 pixeles no se si estará cumplido
Un saludo


Título: Re: Graficos de barras en php
Publicado por: dark_sargon en 13 Noviembre 2011, 18:24 pm
Te felicito, algunos usuarios solo esperan a que hagan el trabajo por ellos :)
Yo haría una gráfica de barras algo así:
Código
  1. <?php
  2. $myImage = ImageCreate(400,300);
  3.  
  4. $white = ImageColorAllocate($myImage, 255, 255, 255);
  5. $yellow  = ImageColorAllocate($myImage, 255, 255, 0);
  6. $red  = ImageColorAllocate($myImage, 255, 0, 0);
  7. $green = ImageColorAllocate($myImage, 0, 255, 0);
  8. $blue = ImageColorAllocate($myImage, 0, 0, 255);
  9. $darkgray = ImageColorAllocate($myImage, 127, 127, 127);
  10. $black = ImageColorAllocate($myImage, 0, 0, 0);
  11.  
  12. $fuente = "arial.ttf";
  13.  
  14.  
  15. imageline ($myImage, 50, 240, 260, 240, $darkgray);
  16. imageline ($myImage, 50, 40, 50, 240, $darkgray);
  17.  
  18. imagettftext($myImage, 10, 0, 26, 243, $black, $fuente, "  0");
  19. imagettftext($myImage, 10, 0, 26, 210, $black, $fuente, " 20");
  20. imagettftext($myImage, 10, 0, 26, 177, $black, $fuente, " 40");
  21. imagettftext($myImage, 10, 0, 26, 144, $black, $fuente, " 60");
  22. imagettftext($myImage, 10, 0, 26, 111, $black, $fuente, " 80");
  23. imagettftext($myImage, 10, 0, 26, 78, $black, $fuente, "100");
  24.  
  25.  
  26. //Los datos llegan de 0 a 100 (porcentaje)
  27. $numero1 = 20;
  28. $numero2 = 40;
  29. $numero3 = 60;
  30. $numero4 = 100;
  31.  
  32. $dato1 = 240-(((240-75)/100)*$numero1);
  33. $dato2 = 240-(((240-75)/100)*$numero2);
  34. $dato3 = 240-(((240-75)/100)*$numero3);
  35. $dato4 = 240-(((240-75)/100)*$numero4);
  36.  
  37. ImageFilledRectangle($myImage, 70, 240, 90, $dato1-1, $darkgray);
  38. ImageFilledRectangle($myImage, 71, 239, 89, $dato1, $blue);
  39.  
  40. ImageFilledRectangle($myImage, 110, 240, 130, $dato2-1, $darkgray);
  41. ImageFilledRectangle($myImage, 111, 239, 129, $dato2, $red);
  42.  
  43. ImageFilledRectangle($myImage, 150, 240, 170, $dato3-1, $darkgray);
  44. ImageFilledRectangle($myImage, 151, 239, 169, $dato3, $green);
  45.  
  46. ImageFilledRectangle($myImage, 190, 240, 210, $dato4-1, $darkgray);
  47. ImageFilledRectangle($myImage, 191, 239, 209, $dato4, $yellow);
  48.  
  49. header ("Content-type: image/png");
  50. ImagePng($myImage);
  51. ImageDestroy($myImage);
  52. ?>

Recuerda agregar el archivo arial.ttf en el mismo directorio de tu .php


Título: Re: Graficos de barras en php
Publicado por: inquilin@19 en 13 Noviembre 2011, 19:26 pm
GRacias de nuevo, está muy bien el script.
Reconozco que soy un gran pato en esto del php (me fastidia más saber que me van a examinar de ello y que dependa de ello que tenga un título o no) pero si alguno de los simples scripts que hago le sirven a alguien, dare la tarea bien hecha.
:D Saudos!


Título: Re: Graficos de barras en php
Publicado por: dark_sargon en 14 Noviembre 2011, 02:25 am
Es verdad, a veces nos obligan a aprender cosas para poder obtener un titulo. Si sabes que despues no lo necesitas, se siente mal. Pero qué bueno que te estés esforzando y quieras ayudar a alguien más :-)

PD. Yo también soy pato para esto peri trato de entender bien la documentación.