Ver índice
Diagramas de sectores

        Ocultar índice  

   Í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 AJAX


Diagramas 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);
?> 
Ver ejemplo .jpg Ver ejemplo .png Ver ejemplo .gif

<?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);
?> 
Ver ejemplo .jpg Ver ejemplo .png Ver ejemplo .gif

<?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);
?> 
Ver ejemplo .jpg Ver ejemplo .png Ver ejemplo .gif

<?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);
?> 
Ver ejemplo .jpg Ver ejemplo .png Ver ejemplo .gif

<?
$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);
?> 
Ver ejemplo .jpg Ver ejemplo .png Ver ejemplo .gif