Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Crear gráfica de barras

Estas en el tema de Crear gráfica de barras en el foro de PHP en Foros del Web. He improvisado una gráfica de barras, puede que no sea la mejor forma, pero es lo que he conseguido de manera nativa con PHP, me ...
  #1 (permalink)  
Antiguo 26/12/2018, 18:37
 
Fecha de Ingreso: enero-2008
Mensajes: 549
Antigüedad: 11 años, 2 meses
Puntos: 7
Crear gráfica de barras

He improvisado una gráfica de barras, puede que no sea la mejor forma, pero es lo que he conseguido de manera nativa con PHP, me gustaría usar una función, así cuando le pase unos valores, se genere una gráfica personalizada

Código PHP:
    $im imagecreate(100,100);
    
imagecolorallocate($im,222,222,222);
    
$blanco imagecolorallocate($im2331491);
    
imagefilledrectangle($im,1,91,8,98,$blanco);
    
imagefilledrectangle($im,11,81,18,98,$blanco);
    
imagefilledrectangle($im,21,71,28,98,$blanco);
    
imagefilledrectangle($im,31,61,38,98,$blanco);
    
imagefilledrectangle($im,41,51,48,98,$blanco);
    
imagefilledrectangle($im,51,41,58,98,$blanco);
    
imagefilledrectangle($im,61,31,68,98,$blanco);
    
imagefilledrectangle($im,71,21,78,98,$blanco);
    
imagefilledrectangle($im,81,11,88,98,$blanco);
    
imagefilledrectangle($im,91,1,98,98,$blanco);
    
// Guardar la imagen
    
imagepng($im);
    
$png ob_get_clean();
    
$uri "data:image/png;base64," base64_encode($png);
    
imagedestroy($im); 

He puesto el código anterior dentro de una función, pero no funciona
Código PHP:
    function GenerarIMG(/* En cuanto se pinte esta IMG recojo los 2 arrays y cambio las barras estáticas por un foreach */){
        
$im imagecreate(100,100); /* $HEIGHT y $width */
        
imagecolorallocate($im,222,222,222);
        
$blanco imagecolorallocate($im2331491);
        
imagefilledrectangle($im,1,91,8,98,$blanco);
        
imagefilledrectangle($im,11,81,18,98,$blanco);
        
imagefilledrectangle($im,21,71,28,98,$blanco);
        
imagefilledrectangle($im,31,61,38,98,$blanco);
        
imagefilledrectangle($im,41,51,48,98,$blanco);
        
imagefilledrectangle($im,51,41,58,98,$blanco);
        
imagefilledrectangle($im,61,31,68,98,$blanco);
        
imagefilledrectangle($im,71,21,78,98,$blanco);
        
imagefilledrectangle($im,81,11,88,98,$blanco);
        
imagefilledrectangle($im,91,1,98,98,$blanco);
        
imagepng($im);
        
$png ob_get_clean();
        
$uri "data:image/png;base64," base64_encode($png);
        
imagedestroy($im);
    } 
Código PHP:
GenerarIMG([height,width],widthBAR,[4,3,7,2,8,6]) 
Código PHP:
GenerarIMG([height,width],widthBAR,[6,3,7,3]) 

Última edición por quico5; 26/12/2018 a las 18:43
  #2 (permalink)  
Antiguo 26/12/2018, 19:04
Avatar de alvaro_trewhela  
Fecha de Ingreso: octubre-2012
Ubicación: localhost
Mensajes: 960
Antigüedad: 6 años, 5 meses
Puntos: 110
Respuesta: Crear gráfica de barras

Pongale header

Código PHP:
Ver original
  1. header ('Content-Type: image/png');
  2. /* your image code generator */
  3. imagepng($img);
  #3 (permalink)  
Antiguo 26/12/2018, 19:20
 
Fecha de Ingreso: enero-2008
Mensajes: 549
Antigüedad: 11 años, 2 meses
Puntos: 7
Respuesta: Crear gráfica de barras

Gracias por responder alvaro_trewhela

He omitido el HEADER, para que el navegador pueda ejecutar HTML...

Código HTML:
<img src="<?php echo image([alto,ancho],ancho_barra,[valoresBarras]) ?>" alt="">

<p>Gráfico de Matemáticas</p>
<img src="<?php echo image([100,100],8,[6,8,7,8]) ?>" alt="Media de 7.25">

<p>Gráfico de Fisica</p>
<img src="<?php echo image([100,100],8,[4,6,5]) ?>" alt="Media de 5"> 
  #4 (permalink)  
Antiguo 27/12/2018, 13:21
Avatar de alvaro_trewhela  
Fecha de Ingreso: octubre-2012
Ubicación: localhost
Mensajes: 960
Antigüedad: 6 años, 5 meses
Puntos: 110
Respuesta: Crear gráfica de barras

Cita:
Iniciado por quico5 Ver Mensaje
Gracias por responder alvaro_trewhela

He omitido el HEADER, para que el navegador pueda ejecutar HTML...
Crea un archivo que se llame codeBar.php con tu código

y haces esto

<img src="codeBar.php?data=alto,ancho,ancho_barra,valor esBarras" />

Y obten los datos así (en codeBar.php)

list($alto,$ancho,$ancho_barra,$valoresBarra) = explode(",", $_GET["data"]);



La zona horaria es GMT -6. Ahora son las 11:59.