Empezamos creando un archivo php y escribiendo el siguiente código
// Definimos el tamaño de la imagenLuego definimos cuatro arreglos, uno para mostrar el texto, otro para guardar el color principal,otro para guardar el color de sombra y el ultimo para guardar el valor numérico registrado.
$imagen = imagecreate(300,550);
// Color de fondo en formato RGB
$bg = imagecolorallocate($imagen,255,255,255);
$estados[0] = "Java";Después de ingresar varios registros a los arreglos, ahora solo resta calcular los porcentajes de los valores.
$colores[0] = imagecolorallocate($imagen,112,112,112);
$sombras[0] = imagecolorallocate($imagen,0,0,0);
$valores[0] = 600 ;
// Sumamos el total de los valoresAhora podemos continuar con el dibujo, centramos la gráfica en las dimensiones de la imagen, modificamos en tamaño del gráfico (del pastel) y ponemos el inicio del angulo del gráfico.
$total = array_sum($valores);
// Calculamos el porcentaje y el ángulo de cada valor
for($i=0; $i<count($valores); $i++) {
$porcentajes[$i] = round(($valores[$i]/$total)*100,2);
$angulos[$i] = round(($porcentajes[$i]*360)/100);
}
// Centro de la gráficaLuego insertamos los datos en la gráfica de la siguiente manera
$cx = 120;
$cy = 65;
// Tamaño del gráfico
$ancho = 200;
$alto = 80;
// Inicio del ángulo
$inicio = 0;
// Repetimos 35 veces la gráfica.y finalmente llevamos a nuestra imagen a la vida
for($n=35;$n>0;$n--) {
for($i=0;$i<count($valores);$i++) {
imagefilledarc($imagen, $cx, $cy+$n, $ancho, $alto,
$inicio, $angulos[$i]+$inicio, $sombras[$i], IMG_ARC_PIE);
$inicio += $angulos[$i];
}
}
$gris = imagecolorallocate($imagen,119,119,119); //Color de las letras
for($i=0;$i<count($valores);$i++) { imagefilledarc($imagen,$cx,$cy,$ancho,$alto,$inicio,
$angulos[$i]+$inicio,$colores[$i],IMG_ARC_PIE);
$inicio += $angulos[$i];
// Especificación de los colores de cada una de las porsiones
imagefilledrectangle($imagen, 20, 155+($i*20), 34, 169+($i*20), $colores[$i]);
imagestring($imagen, 2, 50, 155+($i*20), $estados[$i].": ".$valores[$i]." (".$porcentajes[$i]."%)", $gris);
}
header('Content-type: image/png');Y así de fácil creamos un gráfico en php, no es lo mas avanzado del mundo pero sirve para graficar, así lo insertamos donde queremos <img src="path/pastel.php" /> y siempre estará actualizado! ;)
imagepng($imagen);
imagedestroy($imagen);
El código lo dejo para que lo bajen acá: pastel.php
Si tienen preguntas o comentarios siempre son bienvenidos, espero que les guste el script, adew!!
3 comentarios:
No tenia ni idea que php era capaz de hacer estas cosas, y con las librerias ya existentes! Me parece genial!
Hey mae, ta cool.
Pero es DEM ineficiente usar el count() dentro del for. Cada vez que el iterador pasa por ahi, hace la llamada a la funcion. Lo ideal seria hacer algo como:
$t = count($arr);
y evualar a $t en el iterador.
tengo un problema al tratarlo de hacer dinamico no muestra la grafica y no tengo idea de como hacerlo esto fue lo que modifiq del codigo :
// Color de fondo en formato RGB
$bg = imagecolorallocate($imagen,255,255,255);
require_once ("../Conexion.php");
$cons= new DBManager();
$query= $cons->get_results("SELECT p.`NOM_PROV` , AVG( gc.`Validacion` ) AS `Validacion`
FROM `graficas_estadisticas` gc, `provincia` p
WHERE gc.`Provincia` = p.`COD_PROV`
GROUP BY p.`COD_PROV` ");
foreach ($query as $item) {
$datos =array(array($item->Validacion,$item->NOM_PROV));
}
foreach( $datos as $ElemArray ) {
$p1 = ($ElemArray[1]);
$p2 = ($ElemArray[0]);;
$i=0;
//Definimos los arreglos de los Pedazos :P
$estados[$i] = $p1;
$colores[$i] = imagecolorallocate($imagen,149,255,107);
$sombras[$i] = imagecolorallocate($imagen,139,184,122);
$valores[$i] = $p2 ;
$i=$i+1;
}
Publicar un comentario