sábado, 7 de mayo de 2016

Gráficos de mapa de bits en Excel

Excel es una hoja de cálculo muy potente, pero no está pensada para generar gráficos de mapa de bits (bitmap), aquellos compuestos por píxeles cuyo color puede establecerse individualmente. Las fotografías son el ejemplo más cotidiano de este tipo de imágenes, muy empleadas también en visualizaciones de datos sofisticadas como mapas de calor, scatter plots de alta densidad,...

Pese a lo dicho, en Excel contamos con la herramienta básica para construir gráficos bitmap: celdas que pueden hacerse cuadradas, reducir su tamaño tanto como queramos, y que se colorean a voluntad. Son píxeles poco ortodoxos pero que en un momento dado nos pueden sacar de un apuro.

En el lenguaje de programación de Excel, Visual Basic para Aplicaciones (VBA), el objeto/función Cells(i, j) hace referencia a la celda situada en la fila i y la columna j de cualquier hoja de cálculo. Para establecer el color de la misma basta dar un nuevo valor a su propiedad Interior.Color.

El color se define con una profundidad de 8 bits por canal, lo cual proporciona una paleta de 28·3 tonos diferentes (más de 16 millones). La función RGB() devuelve, a partir de la especificación de tres valores RGB de 8 bits, un entero largo directamente asignable al color de la celda:

Cells(i, j).Interior.Color = RGB(R, G, B)

Como ejemplo he adaptado a VBA la rutina que genera la gráfica del conocido conjunto fractal de Mandelbrot, obteniendo un resultado muy espectacular para las cosas a que nos tiene acostumbrados Excel.



En el archivo mandelbrot.xlsm puede encontrarse el código que genera la imagen anterior, siendo la parte más interesante la instrucción de asignación de color a la celda al ser en definitiva la que "dibuja" el píxel.



Este tipo de representación mejora mucho los gráficos de dispersión con datasets extensos en Excel. Cuando el número de elementos representados es grande, el inevitable solapamiento en la gráfica estándar da lugar por un lado a que se oculten patrones, y por otro a que se pierda la escala real del volumen relativo de ocurrencias en cada región del scatter plot.

El siguiente ejemplo representa el gasto en banda ancha (eje x) vs el gasto en comunicaciones de voz (eje y) de más de 40.000 usuarios convergentes de telecomunicaciones. En la gráfica de dispersión que nos brinda Excel se pierde información incluso con el menor tamaño posible de marcador.



En cambio si acumulamos los datos en una matriz por tramos de consumo suficientemente estrechos, sin salir de Excel podemos pasar del gráfico de dispersión a un mapa de calor con un nivel de detalle muy superior.




La nueva gráfica muestra en escala de grises logarítmica la frecuencia de las combinaciones de consumos de banda ancha y voz, dejando en tono amarillo las zonas completamente despobladas. Es notorio el predominio de concentraciones entorno a valores discretos en ambos ejes, fruto del auge de las tarifas planas en contraposición a los cada vez menos habituales consumos con una fuerte componente PAYG.

Para acabar una forma creativa de mostrar un set de migraciones de planes de precios. Cada cambio de tarifa se representa con una semicircunferencia que va desde la cuota o ARPU origen a la destino, representándose en la mitad superior los clientes que aumentan (uplift), y en la inferior los que reducen (dilución).



La suma solapada de trayectorias da lugar a tonos grises más claros en la madeja que permiten descubrir las zonas con mayor densidad de movimientos, es decir, los pares ARPU origen/destino más habituales en las migraciones.

En el posterior artículo 'Mapas de color para Excel', se encuentra disponible una librería con varios mapas de color predefinidos listos para ser usados en asignaciones de color a celdas de Excel.

No hay comentarios:

Publicar un comentario en la entrada

Por claridad del blog, por favor trata de utilizar una sintaxis lo más correcta posible y no abusar del uso de emoticonos, mayúsculas y similares.