viernes, diciembre 22, 2006

Gráfico de Distribución en Excel

En estos días estuve leyendo el informe del banco HSBC "The Big Picture 'December 2006", que trata sobre las perspectivas económicas para el 2007.
Allí me encuentro con este gráfico, que muestra la composición del portafolio de inversiones recomendado por el banco




Inmediatamente me pregunté como generar este gráfico en Excel. La tarea resultó más fácil de lo que me esperaba. Como creo que este gráfico tiene muchas aplicaciones, paso a mostrar uno de los caminos para construirlo.

Empecemos por explicar la idea general de este gráfico. Las líneas horizontales muestran las distintas alternativas de inversión (grandes empresas – pequeñas empresas; crecimiento – valor; mercados desarrollados – mercados emergentes, etc). Ubicarnos sobre la línea del medio (la línea roja con la flecha) significa que invertimos 50% en cada una de la alternativas opuestas. A medida que invertimos más en una que en la otra, el marcador se moverá hacia el extremo correspondiente.

Para construir este gráfico usamos una combinación de gráficos XY Dispersión con líneas de error.

Empezamos por crear las tablas de datos necesarios. Primero la línea central



Con estos datos creamos un gráfico XY Dispersión, asegurándonos que estas sean las definiciones de la serie



El gráfico resultante es



Ahora corregimos la escala de los ejes, fijándolos de 0 a 1, con este resultado






Para crear la línea vertical usamos barras de error Y. Seleccionamos la serie (que tiene un solo punto) y abrimos el menú de formato de datos y creamos una barra de error Y de acuerdo a estas definiciones



Luego hacemos "desaparecer" el marcador de la serie. En el mismo menú en la pestaña "Tramas" fijamos el valor de "marcador" a "ninguno". El resultado es el siguiente



Ahora le damos el formato adecuado a la barra de error






Nuestro próximo paso es crear la tabla de datos del gráfico de las alternativas de inversión



Los valores de X determinan la posición de los marcadores a lo largo de la línea horizontal de alternativa de inversión.
Para determinar los valores de Y dividimos 1 por la cantidad de puntos de la serie (5 en nuestro caso). De manera que la alternativa que queremos que aparezca en la parte superior del gráfico tendrá el valor 1 para Y, la segunda el valor 0.8 y así sucesivamente.
Las columnas C, D, E y F nos servirán luego para ubicar los rótulos del eje de la Y.

Para agregar la nueva serie, seleccionamos el gráfico, abrimos el menú de Datos de Origen y creamos una nueva serie seleccionando los valores de X y Y de nuestra tabla



con este resultado



Ahora eliminamos los elementos innecesarios en el gráfico: las líneas de división, el eje Y y los marcadores del eje de las X.

Definimos la línea del eje X con formato personalizado que coincida con la línea vertical



Definimos barras de error X para los puntos de la serie, con un valor fijo de 1



Luego damos formato a las barras de error y a los marcadores de la serie



Todo lo que nos queda por hacer es agregar los rótulos, con la técnica que ya mostramos. Empezamos por agregar las series que nos servirán en lugar de los ejes Y. Seleccionamos el gráfico y en el menú Datos de Origen agregamos las dos nuevas series. Los valores de X de los rótulos de la izquierda aparecen en la columna D de la tabla (todos valen 0) y los de Y en la columna B (la posición del rótulo en el gráfico). Los mismo para los rótulos de la derecha, donde los valores de X aparecen en la columna F (todos valen 1)






En esta etapa resulta difícil seleccionar los marcadores de las nuevas series, por lo que momentáneamente quitamos las barras de error

Seleccionamos los puntos de la nueva serie y abrimos el menú de formato de series de datos. En la pestaña Tramas, señalamos "ninguno" para el marcador y en la pestaña Rótulo de datos marcamos "nombre de la serie".
Seleccionamos la segunda serie, a la derecha del gráfico, y pulsamos F4 para copiar los formatos



A los rótulos de la izquierda le hemos dado alineación a la izquierda y a los de la derecha, derecha.

Agregamos las barras de error y conectamos los rótulos de los "ejes" a los valores correspondientes de la tabla

El resultado final

sábado, diciembre 09, 2006

Graficos Excel con Ejes Quebrados – Segunda Nota

En la nota anterior mostramos un método para representar datos en situaciones donde una de las series es desproporcionadamente más grande que las demás.
Ese método demanda mucho trabajo manual (que puede llegar a ser enervante para quien no esté dotado de cierta dosis de paciencia).
Veremos ahora un método mas elaborado, que no requiere (casi) ajustes manuales. Esta nota está basada en la de Jon Peltier sobre el tema.

Supongamos esta tabla



El gráfico que queremos lograr es el siguiente



Empezamos por representar los datos



Como se puede apreciar, las relaciones entre los distintos datos quedan oscurecidas por la desproporción de la línea de productos 2 en relación a las restantes.

Nuestro primer paso es "normalizar" los datos de la tabla. Para esto determinamos el valor donde queremos crear un "quiebre" en el eje de las Y, que en nuestro caso será 500000, y el factor de normalización que será 600000.
Lo que hacemos es restar 600000 de todo valor que sea mayor que el valor del punto de quiebre.
La tabla normalizada es la siguiente



La fórmula usada para normalizar los datos es =SI(B2>quiebre,B2-factor,B2), donde "quiebre" y "factor" son los nombres que señalan los rangos que contienen estos datos.

Ahora creamos un nuevo gráfico con los datos normalizados



Nuestro próximo paso es crear un eje de las Y que sirva a nuestros propósitos. El truco que empleamos es crear una serie de datos que representamos con el tipo de gráfico XY Dispersión. El valor de X será siempre 0, y el valor de Y coincidirá con los rótulos que queremos que aparezcan en el eje e las Y.

Para definir los valores de esta nueva serie creamos esta tabla



La fórmula para calcular el valor de Y (en la columna B) es

=SI(C38>quiebre,C38-factor,C38)

En la columna C ponemos los valores que queremos que aparezcan como rótulos.

Ahora copiamos los valores del rango B38:B44 y los agregamos como nueva serie al gráfico



Seleccionamos la nueva serie y cambiamos el tipo de gráfico a Dispersión XY. Aquí tenemos que manipular un poco las definiciones de la serie. Seleccionamos los puntos de la serie y en el menú Datos de origen agregamos el rango de los valores X (el rango A38:A44 en nuestra tabla).



Ahora Excel ha agregado dos ejes secundarios.



El eje secundario de las Y es innecesario y lo eliminamos (quitar la marca en el menú Opciones de Gráfico—Ejes).
Seleccionamos el eje secundario de la X y fijamos la escala con un mínimo de 0 y un máximo de 1. Luego hacemos "desaparecer" el eje eligiendo la opción "ninguno" en la pestaña de Tramas para las definiciones del eje.

Nuestro gráfico muestra ahora el eje de la Y con sus valores y los marcadores de la serie que acabamos de agregar (los pequeños cubos rosados).


Eliminamos los rótulos del eje de las Y, poniendo "ninguna" en las definiciones de las marcas de graduación en el menú de formato del eje Y.



Cambiamos el marcador con forma de cubo rosado a un guión negro, para crear la ilusión de marcadores de rótulo del eje

Luego, hacemos lugar a la izquierda del eje, achicando el área del gráfico, y ligamos los "marcadores" a los valores del rango C38:C44 de la tabla auxiliar. Aquí tenemos que usar un truco que ya hemos mostrado en una nota anterior.
Primero, agregamos rótulos a la serie. Luego seleccionamos uno de los rótulos (un clic seguido de otro), en la barra de fórmulas ponemos "=" (sin las comillas) y creamos una referencia a la celda que contiene el valor.


Por ejemplo, el valor 1400000 esta ligado a la celda C38



A esta altura de los acontecimientos, nuestro gráfico se ve así



Nuestro último paso consiste en crear el quiebre en el eje de las Y y en los puntos que superen el punto de quiebre (en nuestro caso sólo una).

También esto lo haremos creando una nueva serie que agregamos al gráfico. Para esto confeccionamos una tabla auxiliar



La tabla "posición de quiebre" nos está dividida en dos sectores. En "puntos" ponemos en la primera línea los coordenadas del primer punto (el eje de la Y) que será siempre (0,0). En las líneas subsiguientes ponemos los puntos que superan la línea de quiebre, en nuestro caso sólo uno (el punto 2 de la serie 1).
En la "posición" calculamos las coordenadas de los puntos que superan la línea de quiebre. La fórmula en la celda C133 es =SI(B133=0,0,(1/$B$128)*1.5)
Usamos esta fórmula para calcular la posición de un punto en el eje secundario que sea equivalente a la del eje principal. Como recordarán, el eje secundario de las X va de 0 a 1. Por lo tanto si hay 5 puntos Excel divide el eje secundario en intervalos de 0.2. El segundo punto estará ubicado, en términos del eje secundario, en el valor 0.3 (entre los valores 0.2 y 0.4). La fórmula divide 1 por el número de puntos en la serie y luego agrega un 50% para centrarlo.

Seleccionamos el rango C132:D134 y lo agregamos al gráfico como una nueva serie



Luego cambiamos el tipo de gráfico a Dispersión XY (sin líneas de conexión entre los puntos). También hacemos desaparecer el eje secundario de las X que ha vuelto a aparecer



Tenemos ahora que crear una marca para el quiebre. Usamos el paralelogramo de Autoformas. Agregamos dos líneas que coincidan con las líneas superior e inferior. Luego definimos el paralelogramo sin líneas y finalmente agrupamos las tres formas. Giramos la forma agrupada hasta obtener el ángulo deseado. Todo este proceso se puede hacer sobre el gráfico, de manera que sea más fácil calcular el tamaño de los elementos.

Con la técnica que ya mostramos en la nota sobre Autoformas, reemplazamos los marcadores de la serie de quiebre, con la forma que acabamos de crear.

El resultado es




QED (No! No "que en paz descanse" sino "quod erat demoonstrandum").