Índice de contenidos
Instalación en Windows
Instalación en Ubuntu
Servidores seguros
Páginas dinámicas
Sintaxis básica
Operaciones
Arrays
Formatos de presentación
Operadores
Bucles
Extraer y ord. información
Funciones
Ficheros externos
Imágenes dinámicas
Gestión de directorios
Cookies y sesiones
Clases y objetos
Ficheros en formato PDF
Bases de datos MySQL
PHP y XML
PDO - Bases SQLite / MySQL
MySQL a traves de misqli
Algo de JavaScript y AJAXDiagramas de sectores
Esta posibilidad gráfica de tratamiento de información estadística la proporciona la función
imagefilledarc( Xc, Yc, a, b,anguloi, angulof , $color, tipo )dónde los parámetros son: Xc y Yc que son las coordenadas del centro de la elipse cuyo arco (o porción) tratamos de representar. Los números a y b son las longitudes (expresadas en pixels) de los semiejes horizontal y vertical de la elipse. Si ambos fueran iguales el resultado sería circular. Los parámetros anguloi y angulof son las posiciones (en grados sexagesimales) de los radios (inicial y final) que delimitan el sector que se trata de representar.
Los cero grados coinciden con el semieje horizontal positivo y el sentido del recorrido angular es el de las agujas del reloj.
El parámetro $color es la variable –ha de ser definida previamente mediante imagecolorallocate– que indica el color que ha de utilizarse en el gráfico. Por último el parámetro tipo un constante PHP que puede tomar uno de los siguientes valores: IMG_ARC_PIE, IMG_ARC_NOFILL, IMG_ARC_EDGED o IMG_ARC_CHORD
Con la primera de las constantes dibuja el sector de elipse delimitado por los radios indicados relleno con el color especificado. Mediante IMG_ARC_NOFILL únicamente dibuja la porción de arco, pero no incluye la representación de los radios en el dibujo. La opcion IMG_ARC_EDGED se comporta de forma idéntica a IMG_ARC_PIE cuando se utiliza de forma aislada aunque tiene una opción muy interesante que veremos un poco más abajo. Con IMG_ARC_CHORD el resultado es un triángulo –relleno con el color indicado– formado por los dos radios y la cuerda correspondiente al arco que delimitan.
Combinar dos constantes de tipo
Cuando en la función imagefilledarc() utilizamos como tipo una expresión tal como: IMG_ARC_NOFILL|IMG_ARC_EDGED (fíjate en el signo | que separa ambas constantes) lo que obtenemos es la representación gráfica del contorno del sector (incluye los radios que lo delimitan). Mediante esta opción -con dos llamadas a la función- tenemos la posibilidad de representar el sector con un color de relleno (usando IMG_ARC_PIE) y, luego, superponerle un contorno de distinto color. Puedes verlo en los ejemplos.
Efecto tridimensional
Tal como puedes ver en los ejemplos, resulta fácil lograr un efecto tridimensional en el dibujo de los sectores. Basta con crear un bucle que dibuje arcos sucesivos (separados verticalmente por un pixel) y posteriormente superponer un sector relleno con un color distinto.
Ejemplos de sectores
<?php
$im = imagecreate (400, 400);
$fondo = imagecolorallocate($im, 226, 226, 226);
$col1=imagecolorallocate($im,255,255,0);
$col2=imagecolorallocate($im,255,0,0);
imagefilledarc($im, 200, 200, 350, 300, 20, 240, $col1, IMG_ARC_PIE);
imagefilledarc($im, 200, 200, 350, 300, 10, 150, $col2, IMG_ARC_NOFILL);
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
<?php
$im = imagecreate (400, 400);
$fondo = imagecolorallocate($im, 226, 226, 226);
$col1=imagecolorallocate($im,255,255,0);
$col2=imagecolorallocate($im,255,0,0);
imagefilledarc($im, 200, 200, 350, 300, 20, 240, $col1, IMG_ARC_EDGED);
imagefilledarc($im, 200, 200, 350, 300, 10, 150, $col2, IMG_ARC_NOFILL);
header('Content-type: image/png');
imagepng($im);
imagedestroy($im);
?>
<?php
$im = imagecreate (400, 400);
$fondo = imagecolorallocate($im, 226, 226, 226);
$color1=imagecolorallocate($im,255,0,0);
imagefilledarc ($im, 200, 200, 350, 300, 20, 240, $color1,
IMG_ARC_NOFILL|IMG_ARC_EDGED);
header('Content-type: image/gif');
imagegif($im);
imagedestroy($im);
?>
<?php
$im = imagecreate (400, 400);
$fondo = imagecolorallocate($im, 226, 226, 226);
$color1=imagecolorallocate($im,255,0,0);
imagefilledarc ($im, 200, 200, 350, 300, 50, 200, $color1, IMG_ARC_CHORD);
header('Content-type: image/gif');
imagegif($im);
imagedestroy($im);
?>
<?
$im = imagecreate (400, 400);
$fondo = imagecolorallocate($im, 226, 226, 226);
$color1=imagecolorallocate($im,200,0,0);
$color2=imagecolorallocate($im,255,0,0);
$color3=imagecolorallocate($im,255,255,255);
for($i=200;$i<225;$i++){
imagefilledarc($im, 200, $i, 370, 270, 50, 330, $color1,
IMG_ARC_NOFILL|IMG_ARC_EDGED);
}
imagefilledarc($im, 200, 200, 370, 270, 50, 330, $color2, IMG_ARC_EDGED);
imagefilledarc($im, 200,200, 370, 270, 50, 330, $color3,
IMG_ARC_NOFILL|IMG_ARC_EDGED);
header('Content-type: image/gif');
imagegif($im);
imagedestroy($im);
?>