Graficas de quesitos en 3D en PHP
Si disponemos de PHP con GD, podremos disfrutar de la creación al vuelo de imagenes, esta poderosa herramienta, nos permite entre muchas otras cosas la creación de todo tipo de gráficas, de todas ellas, las más vistosas són las gráficas de quesitos en 3D que vamos a ver cómo podemos generar.
Para crear una gráfica de quesitos, usaremos la función imagefilledarc, que nos creará un quesito del color que nosotros le indiquemos, veamos un ejemplo:
<?php
// Creamos la imagen
$im = imagecreate(200,200);
// Definimos un color para el quesito
$fondo = imagecolorallocate ($im, 255,255,255);
$rojo = imagecolorallocate ($im, 255,0,0);
// Dibujamos el quesito
imagefilledarc ($im, 100, 100, 200, 175, 0, 45, $rojo, IMG_ARC_PIE);
// Enviamos la imagen
header("Content-type: image/png");
imagepng($im);
?>
Veamos al detalle lo que hace la función imagefilledarc, esta función crea un arco de color en la imagen, y sus parámetros són:
imagen - Variable con el recurso imagen
cX - Coordenada X del centro del círculo
cY - Coordenada Y del centro del círculo
X - Tamaño horizontal del círculo
Y - Tamaño vertical del cñírculo
anguloI - Angulo inicial del arco dibujado en grados
anguloF - Angulo final del angulo dibujado
color - Color del arco dibujado
estilo - Usaremos IMG_ARC_PIE
Ahora, vamos a darle un efecto de sombreado al mismo arco que acabamos de crear, creando unos arcos más oscuros debajo suyo:
<?php
// Creamos la imagen
$im = imagecreate(200,200);
// Definimos un color para el quesito
$fondo = imagecolorallocate ($im, 255,255,255);
$rojo = imagecolorallocate ($im, 255,0,0);
$rojo_oscuro = imagecolorallocate ($im, 150,0,0);
// Dibujamos el efecto sombra 3D
for ($i = 0; $i < 10; $i ++)
imagefilledarc ($im, 100, 100+(10-$i), 200, 175, 0, 45, $rojo_oscuro, IMG_ARC_PIE);
// Dibujamos el quesito
imagefilledarc ($im, 100, 100, 200, 175, 0, 45, $rojo, IMG_ARC_PIE);
// Enviamos la imagen
header("Content-type: image/png");
imagepng($im);
?>
Y este será el resultado obtenido:

Ahora vamos a hacer el mismo ejemplo pero con unos cuantos quesitos, de manera que habremos generado nuestra primera gráfica de quesitos completa:
<?php
// Creamos la imagen
$im = imagecreate(200,200);
// Definimos un color para el quesito
$fondo = imagecolorallocate ($im, 255,255,255);
$rojo = imagecolorallocate ($im, 255,0,0);
$rojo_oscuro = imagecolorallocate ($im, 150,0,0);
$verde = imagecolorallocate ($im, 0, 255,0);
$verde_oscuro = imagecolorallocate ($im, 0, 150,0);
$azul = imagecolorallocate ($im, 0, 0, 255);
$azul_oscuro = imagecolorallocate ($im, 0, 0, 150);
// Dibujamos el efecto sombra 3D
for ($i = 0; $i < 10; $i ++){
imagefilledarc ($im, 100, 100+(10-$i), 200, 175, 0, 45, $rojo_oscuro, IMG_ARC_PIE);
imagefilledarc ($im, 100, 100+(10-$i), 200, 175, 45, 145, $verde_oscuro, IMG_ARC_PIE);
imagefilledarc ($im, 100, 100+(10-$i), 200, 175, 145, 360, $azul_oscuro, IMG_ARC_PIE);
}
// Dibujamos el quesito
imagefilledarc ($im, 100, 100, 200, 175, 0, 45, $rojo, IMG_ARC_PIE);
imagefilledarc ($im, 100, 100, 200, 175, 45, 145, $verde, IMG_ARC_PIE);
imagefilledarc ($im, 100, 100, 200, 175, 145, 360, $azul, IMG_ARC_PIE);
// Enviamos la imagen
header("Content-type: image/png");
imagepng($im);
?>
Y este es nuestro resultado, una magnífica gráfica con quesitos:

Ahora solo nos faltará un poco de imaginació para recojer los valores de la base de datos, o de donde nos sea más conveniente.
Autor: Eloi de San Martín
http://www.programacionweb.net
Usuarios que han visto este tema también han visto...
- Paginador PHP usando pear y templates
- Mostrar imagenes aleatorias en PHP de forma sencilla
- Ordenación de Arrays con QuickSort en PHP
- Enviar un mail con PHP
- El tema quizá pueda parecer trivial... ¿Un FAQ del echo? Sin embargo, éste aunque va dirigido primordialmente a principiantes, también puede ser aprovechado por usuarios experimentados que hayan adquirido ciertos vicios en la programación con PHP (algo b
Información legal | Política de Privacidad | Contacte con nosotros
Otro proyecto de Factoría de Internet. Copyright© 2003-2011 Factoría de Internet S.L.. Todos los derechos reservados.