sábado, septiembre 16, 2006

Gráficos tipo velocímetro en Excel - tercera nota

En la nota anterior mostrábamos un ejemplo de gráfico tipo velocímetro para indicar el porcentaje de realización de un proyecto. La escala del velocímetro iba de 0% a 100% y la posición de la aguja estaba dada por el porcentaje cumplido.
Un uso más frecuente para este tipo de gráficos es la representación de índices de performance, KPI (Key Performance Indicators), que tanto se han puesto de moda desde principios de los '90.

En esta nota desarrollaremos un ejemplo de gráfico tipo velocímetro cuya escala empieza y termina en números arbitrarios y utiliza dos agujas.
La técnica es similar a la que mostramos en la nota anterior, y está basada en los métodos mostrados por Jon Peltier en su nota sobre el tema.

Supongamos que en nuestra hipotética empresa publicamos cada tanto un índice que mide la relación entra las ventas y los días de trabajo en un período. Este índice lo comparamos con el índice correspondiente del mismo período del año anterior. Para el caso supongamos esta tabla de datos:





También suponemos que este índice puede variar entre 10 y 90.

El primer paso es construir el fondo del velocímetro (la escala) para lo cual creamos una tabla que contiene los rótulos y los valores. Es importante distinguir entre los rótulos y el valor. El valor determina el tamaño del sector. El primer sector va de 10 a 30, por lo tanto en la celda al lado del rótulo 10 ponemos el valor 20. El segundo sector corre de 30 a 70, por lo tanto el valor correspondiente al rótulo 30 será 40 y así sucesivamente. El valor correspondiente al último rótulo debe ser, necesariamente, la suma de todos los valores anteriores.




Como en el caso anterior, dejamos la columna de rótulos sin encabezamiento para darle a entender a Excel que se trata de rótulos. Seleccionamos el rango y en el asistente de gráficos elegimos el de tipo anillos



Como en el ejemplo de la nota anterior, eliminamos el título y la leyenda, y giramos el gráfico 270 grados



Seleccionamos el sector inferior y cambiamos las definiciones de borde y área en la pestaña "Trama" a "ninguno". Con esto hacemos "desaparecer el sector inferior. También podemos cambiar los colores de los sectores visibles de acuerdo a nuestras preferencias.

Luego abrimos el menú de formato de series de datos y en la pestaña "Rotulos" marcamos la opción "Nombre de la categoría".




Ahora arrastramos los rótulos a su posición, con lo que terminamos la primer parte de nuestra tarea



El próximo paso es construir las agujas, que serán representadas por un gráfico de tipo XY con líneas unidas,

Para esto volvemos a nuestra tabla de índices los que tendremos que convertir a radianes, tal como hicimos en el ejemplo anterior. En este caso construimos esta tabla auxiliar




La fórmula en la celda B7 (que está combinada con C7) convierte el valor del índice del año 2005 a radianes:

=(B4-$B$13)/($B$16-$B$13)*PI()

donde B13 es el primer rótulo de los anillos (que en este caso tratamos como valor) y B16 es el último rótulo de los anillos. Es decir el mínimo y el máximo de nuestra escala.

A partir de este valor, usamos las funciones =SENO() y =COS() para calcular los puntos de las agujas.
El primer valor de X y de Y será siempre 0. El segundo valor de X es calculado por la fórmula

=-COS(B7) (prestar atención al signo "-" delante de COS).

El segundo punto de Y es calculado por la fórmula

=SENO(B7)

Procedemos de la misma manera para el índice del año 2006.

Ahora procedemos a combinar los nuevos valores en el gráfico de anillos.

Primero seleccionamos los valores para el año 2005, el rango B8:C9, y lo copiamos (Ctrl+C).
Seleccionamos el gráfico de anillos y en el menú "Edicion" pulsamos "Pegado Especial". En el diálogo que se abre



seleccionamos "agregar celdas como nueva serie" y "valores (Y) en filas". Marcamos "categorías en la primera columna" y pulsamos Aceptar



Ahora seleccionamos el nuevo anillo (violeta) y en el menú Tipo de Gráfico elegimos XY (Dispersión) unido con líneas.
Hacemos lo mismo con los datos del año 2006, el rango D8:E9





El paso siguiente es arreglar los ejes, para que coincidan con los del gráfico de anillos.
Seleccionamos el eje de las X y en el diálogo de formato del eje, en la pestaña Escala ponemos el mínimo a -1, el máximo a 1 y "eje de valores (Y) cruza en:" a 0.



Hacemos lo mismo con el eje de las Y




Borramos el eje de las Y y los marcadores en el eje de las X (en el diálogo de formato de ejes, en la pestaña Tramas ponemos los valores de las marcas a "ninguno").


Todo lo que nos queda ahora por hacer es dar los formatos deseados.

Por ejemplo, para agregar los valores en el extremo de las agujas usamos la técnica que mostramos en la nota anterior:

1 - Seleccionamos la "aguja" y abrimos el menú de formato de series de datos. En la pestaña "rótulo de datos" seleccionamos "valor X".

2 - El rótulo muestra el valor en radianes, cuando lo que queremos es el valor del índice. Para esto, con el rótulo seleccionado, hacemos clic en la barra de las fórmulas, escribimos "=" (sin las comillas) y hacemos clic a la celda B4, si se trata de la aguja del año 2005, o a la celda C4 si se trata del año 2006. También podemos agregar títulos, leyenda y cuadros de texto, dar fondo al gráfico y demás efectos que creamos convenientes





En la nota en su sitio, Jon Peltier propone un método más sofisticado para agregar marcadores a la escala del velocímetro (al gráfico de anillos). Les recomiendo leer la nota.



Categorías: Graficos_

Technorati Tags: ,

viernes, septiembre 15, 2006

Gráficos tipo velocímetro en Excel – segunda nota

En la entrada anterior explicamos las técnicas a emplear para crear un gráfico en Excel que simule un velocímetro. Si queremos crear un gráfico aún más parecido a un velocímetro, tendremos que diseñarlo con aguja (manecilla).
En esta nota mostraremos las técnicas y trucos necesarios para lograr este efecto.

Volvamos al ejemplo de la evaluación de avance de un proyecto






Nuestro objetivo es representar estos datos con el siguiente gráfico



Empezaremos por el final. Para crear la escala en el fondo, usamos la técnica que ya vimos en la nota anterior: un gráfico de tipo anillos al que dividimos en dos mitades. En una de las mitades representamos los intervalos de 10% en orden ascendiente de izquierda a derecha. La otra mitad la hacemos "desaparecer".

Los pasos son los siguientes:

1 – Armamos una tabla con una columna para los rótulos y una para los valores de los anillos, cuidándonos de dejar la celda del encabezamiento de los rótulos (A19) en blanco. De esta manera Excel utilizará los datos de la comuna A como rótulos y no como valores de un segundo anillo.




2 – Seleccionamos el rango (A19:B30) con los valores y los rótulos y en el asistente de gráficos elegimos el tipo anillos



Nos aseguramos que en el asistente de gráficos la opción sea "Series en columnas"



3 – En la pestaña "Títulos" borramos el título; en la pestaña "Leyenda" eliminamos la leyenda y en la pestaña "Rótulos de Datos" señalamos la opción "Nombre de la categoría"



Apretamos aceptar y este es el resultado



4 - Seleccionamos la serie de datos con un clic sobre alguna de las porciones del anillo y abrimos el menú de formato de serie de datos



En la pestaña "Tramas" elegimos un color conveniente (en nuestro ejemplo el amarillo claro)



En la pestaña "Opciones" llevamos el valor de la opción "ángulo del primer sector" a 270 grados, el tamaño del agujero del anillo a 20% y quitamos la marca de la opción "Variar colores de los sectores" de manera que todas las porciones tengan el mismo color.



5 – Para hacer desaparecer el anillo inferior, seleccionamos el sector (con un doble clic sobre la porción) y abrimos el menú de formato de puntos de datos.



En el diálogo señalamos para "Borde" y "Área" las opciones "ninguno"



6 – Arrastramos los rótulos a la posición deseada, lo que haremos manualmente. Elegimos los rótulos con un clic y con un segundo vamos eligiendo cada uno de los rótulos y llevándolo a la posición deseada



Presten atención que el rótulo de la porción inferior (100%) aparece a pesar de que no vemos el sector.

Con esto hemos terminado de preparar la escala de nuestro velocímetro. Ahora crearemos la aguja lo que hacemos usando un gráfico de tipo XY (Dispersión) con puntos de datos conectados por líneas.




Uno de los puntos de la aguja será siempre el cero; el otro punto deberá "moverse" a lo largo de una semicircunferencia que coincida con el borde exterior del anillo.
Esto significa que debemos transformar el dato que queremos representar (el porcentaje cumplido del proyecto) a radianes y establecer una fórmula que nos de los valores del punto. Hacemos esto usando las
funciones seno [=SENO()] y coseno [COS()] de Excel.

A nuestra tabla de datos del proyecto la agregamos una tabla para la transformación de datos




Los valores de las celdas A7 y B7 serán siempre cero.

El valor de la celda A8 está determinado por la fórmula

=-COS(B4*PI())/B10
Prestar atención al signo "-" al principio de la fórmula.

El valor de la celda B8 está determinado por la fórmula

=SENO(B4*PI())/B10

La función de la celda B10 es darnos control sobre el largo de la aguja. Podemos cambiar el valor en la celda B10 hasta llegar al largo deseado.

Ahora, con el rango A7:B8 seleccionado, elegimos el gráfico de tipo XY con líneas sin marcadores y nos aseguramos que la opción "series en" sea "columnas"




Quitamos las líneas de división y apretamos "Aceptar"



Como ven, tenemos todavía mucho trabajo por delante.


La primer tarea es adaptar los ejes a nuestras necesidades. Elegimos el eje de las X y abrimos el diálogo de formato del eje.




En la pestaña "Escala" fijamos el valor mínimo a -1 y el máximo a 1

Ahora seleccionamos el eje de las Y y apretamos F4 para copiar el formato del eje de las X. Este es el resultado




Ahora borramos el eje de la Y y los rótulos del eje de las X. Este es ahora nuestro gráfico




La línea que vemos une dos puntos: uno determinado por los valores (0,0) y el otro determinado por los valores (0.556, 0.962).

Ahora tenemos que combinar los dos gráficos. Excel permite presentar distintas series de datos en un mismo gráfico con distinto tipos de gráficos. Por lo tanto lo que haremos es copiar la serie de datos que define la aguja al gráfico de anillos y luego cambiar ciertas definiciones para lograr el efecto deseado.

Procedemos de esta manera:

1 – Seleccionamos el rango de los valores XY (A7:B8) y los copiamos (Ctrl+C). Luego seleccionamos el gráfico de anillos y en el menú de Excel apretamos "Edición--Pegado Especial". En el diálogo que se abre señalamos "agregar celdas como nueva serie" , "valores Y en columnas" y "Categorías (rótulos de X) en la primera columna"




El resultado es un tanto desalentador, pero enseguida nos ocuparemos de esto.



2 – Seleccionamos el anillo violeta (la nueva serie que acabamos de agregar) y abrimos el diálogo de tipo de gráfico.



Elegimos el tipo XY con líneas sin marcadores y apretamos "Aceptar"



3 – Ahora arreglaremos los ejes para que la aguja coincida con el gráfico de los anillos. Seleccionamos el eje de las Y y, como mostramos antes, definimos el valor mínimo a -1, el máximo a 1, y en "Eje de valores X cruza en" ponemos 0.



Seleccionamos el eje de las X y apretamos F4 para copiar el formato. Borramos el eje de la Y para lo cual en el menú Gráfico--Opciones de gráfico, en la pestaña Eje quitamos la marca del eje de las Y. Del eje de las X quitamos los rótulos



Como ven, casi hemos terminado.

En el extremo de la aguja aparece el rótulo con el valor del punto (0.556), cuando lo que queremos es que aparezca el valor original 66.7%.

El "truco" es el siguiente: seleccionamos el rótulo del punto (dos clic separados por un pequeño intervalo). Con el rótulo seleccionado creamos una referencia a la celda B4 en la barra de fórmulas (clic a la barra de fórmulas, escribimos "=" y hacemos un clic a la celda B4).



Los últimos toques son formar el fondo del gráfico, el rótulo del valor y la aguja, todo de acuerdo a los gustos personales de cada uno.



En una próxima nota veremos una interesante variante con dos series de datos (dos agujas) propuesta por
Jon Peltier en su sitio.

Categorías: Graficos_

Technorati Tags: ,

martes, septiembre 12, 2006

Gráficos en Excel – Como crear un gráfico tipo velocímetro

Uno de mis lectores me pregunta como se pueden diseñar gráficos en Excel del tipo "velocímetros". Se trata de esos gráficos que se ven como taquígrafos, por ejemplo como este, tomado del sitio de Jon Peltier





La galería de gráficos de Excel no incluye este tipo de diagramas, pero su realización es posible usando algunos trucos.

En esta nota daremos una explicación de las técnicas para lograr este tipo de gráficos en Excel, en sus formas más básicas. Gráficos con agujas, como el de la imagen, requieren técnicas más elaboradas y ciertos conocimientos de trigonometría. Estos gráficos serán tratados en una futura nota.

Las fuentes de esta nota son el sitio ya mencionado de
Jon Peltier y partes del libro de John Walkenbach "Excel Charts".

La forma más sencilla es un gráfico que muestra el porcentaje de lo cumplido en relación al total planeado. Supongamos esta sencilla tabla



Nuestro objetivo es generar este gráfico



Este gráfico es, de hecho, uno de tipo "circular" (pie, en inglés), de tres datos (porciones), donde hemos ocultado la tercer porción que representa la mitad de el gráfico.
Para lograr este efecto, usamos una tabla auxiliar donde dividimos el dato "cumplido" por la mitad y calculamos la mitad del restante. La mitad restante es, necesariamente, la mitad que ocultaremos en el gráfico.




Para lograr todos lo efectos los pasos son los siguientes:

1 – definir de los datos

Las fórmulas son:


en la celda B7: =B1/2
en la celda B8: =B2/2-B7
en la celda B9: =B2/2

2 – girar el gráfico de acuerdo a la necesidad (en este caso 270 grados)




3 - seleccionar el punto 3 de los datos y marcar el valor del área y del borde como "ninguno"



4 – El rótulo que muestra el porcentaje de lo cumplido es un cuadro de texto que hemos ligado a la celda B4



para hacer esto, seleccionamos el cuadro con un clic y en la barra de fórmulas cramos el vínculo a la celda.

Nota: este gráfico presupone que los valores sean siempre positivos.

Un gráfico más elaborado se puede lograr usando la variante "anillos". En este ejemplo, clasificamos los resultamos de un examen, de acuerdo a la nota obtenida, en "reprobado", "regular", "bueno" y "excelente". El resultado de cada examen lo exhibimos en un gráfico como este:




Para lograrlo usamos una técnica similar a la anterior, pero con el gráficos "anillos".
El primer paso consiste en elaborar una tabla auxiliar que nos permita representar los datos:




Las fórmulas son las siguientes



En la columna "Auxiliar" usamos la misma técnica que en el gráfico anterior, dividiendo los valores por la mitad.
En la columna "Valor Límite" establecemos los límites de las calificaciones, también en este caso dividido por la mitad. En nuestro ejemplo, el límite superior de "Reprobado" es 40 puntos, por lo tanto en la celda C4 ponemos un valor de 20, "regular" es hasta 70 puntos, es decir 30 puntos más a partir de "reprobado". Por lo tanto anotamos 15 (la mitad de 30) en la celda C5. Y así sucesivamente.
Con estos datos, más los rótulos de la columna B podemos construir nuestro gráfico.

Sin seleccionar ninguna celda activamos el asistente para gráficos y definimos las series de esta manera:

Serie 1: =Anillos!$A$4:$A$6
Serie 2: =Anillos!$C$4:$C$8, para esta serie definimos también los rótulos de las categorías, =Anillos!$B$4:$B$7




Abrimos el diálogo de Formato de Series de Datos y giramos el gráfico 270 grados



Seleccionamos el punto 5 de la serie 2 (valor límite) y en el diálogo de Formato de punto de datos ponemos los valores de "borde" y "área" en "ninguno"



Hacemos lo mismo con el tercer punto de la serie 1 (Auxiliar)

Cambiamos el área de los puntos de la serie 1 al color blanco y a los puntos de las serie 2 les damos colores apropiados.

Todo lo que nos queda por hacer es agregar dos cuadros de textos, uno ligado a la celda A1, que será el título del gráfico y el otro ligado a la celda B1, que mostrará el puntaje obtenido en el examen.
También la damos un fondo al área del gráfico y voila!

En la próxima nota veremos algunos ejemplos más elaborados y la construcción de gráficos "velocímetro" con agujas.




Categorías: Graficos_

Technorati Tags: ,