2 octubre 2020 1577 palabras, 7 min. read Última actualización : 15 abril 2022

Tutorial: Cómo crear un Joyplot con Tableau

Por Pierre-Nicolas Schwab Doctor en marketing, director de IntoTheMinds
Después de haberte explicado cómo crear un mapa hexadecimal isométrico, ahora abordo un tema más difícil: la creación de un diagrama de control con Tableau. He usado un joyplot en la visualización que he enviado a IronViz. Como este tipo […]

Después de haberte explicado cómo crear un mapa hexadecimal isométrico, ahora abordo un tema más difícil: la creación de un diagrama de control con Tableau.

He usado un joyplot en la visualización que he enviado a IronViz. Como este tipo de gráfico es relativamente raro y he tenido algunos problemas para hacerlo bien, he pensado que un tutorial sería bien visto.

Índice

¿Qué es un joyplot?

El joyplot (o «Ridgeline plot», ver el origen del nombre en el siguiente párrafo) consiste en la yuxtaposición vertical, en el mismo eje horizontal, de histogramas, curvas de distribución o series de tiempo.
Este tipo de visualización de datos es particularmente útil para comparar distribuciones estadísticas o mostrar diferencias entre series de tiempo.
El (mal uso) que he hecho en Tableau utiliza los picos de múltiples curvas de distribución para dar la ilusión de una visualización geográfica. La inspiración vino del trabajo de Alexander Varlamov, cuyo tutorial seguí aquí.

El origen del nombre «Joyplot»

Fue mientras investigaba la construcción del joyplot que descubrí el origen de este nombre. Konstantin Greger explica en su blog que el nombre deriva de la ilustración del disco “Unknown Pleasures” de la banda inglesa “Joy Division” (activa desde 1976 a 1980). Mi falta de cultura “rock” me había hecho extrañar a esta banda cuyas melodías, sin embargo, conocía: “El amor nos destrozará”.


El nombre «joyplot» parece aparecer en 2017 después de que Jenny Brian sugiriera el nombre en referencia al álbum Joy Division.

Se produjo una mini polémica porque «Joy Division» fue el nombre que se le dio a grupos de mujeres judías que satisfacían las necesidades sexuales de los soldados nazis en los campos de concentración. Desde entonces, se ha propuesto el término «Ridgeline plot». Para una discusión más completa, recomiendo este excelente articulo.


Una guía paso a paso para crear el diagrama de control con Tableau.

Por supuesto, hacer un diagrama de control «clásico» con Tableau no es ningún problema. Esto se vuelve más complicado cuando deseas desviar el diagrama de control para representar picos de densidad dentro de un área geográfica.
Este es el desafío de este tutorial, que te permitirá usar los joyplots para hacer un mapa como el que se muestra a continuación.

En los siguientes párrafos encontrarás todas las explicaciones necesarias para reproducir, paso a paso, el mismo tipo de visualización que la mostrada arriba.
Para entender el principio, es necesario tener en cuenta que detrás de este tipo de visualización hay una “cuadrícula”, algunos puntos están asociados a un valor y otros no.

Se mostrará un “pico” solo para los cuadrados que están asociados con un valor (las mallas de color naranja en el diagrama de enfrente).

Dicho esto, es hora de ponerse manos a la obra.

.


Paso 1: procesamiento de latitud y longitud

Lo primero que debes hacer es redondear las coordenadas geográficas (latitud, longitud) de tus puntos para ajustarlos a la cuadrícula. Esto requiere pensar un poco de antemano sobre el «paso» a adoptar. Un paso demasiado fino podría «acuñar» la mesa. Un paso demasiado ancho no dará un resultado visualmente satisfactorio.
Para mi visualización de la población obesa por condado en Estados Unidos, inicialmente había optado por un paso de 0,01. Seguía el consejo de Alexander Varlamov. Un paso tan leve funciona para áreas geográficas pequeñas (en la escala de una ciudad, por ejemplo) pero no para un país tan grande como los Estados Unidos. Entonces, retrocedí en un paso de 0,1.

Después de haber realizado una unión interna en los centroides de cada condado, solo queda aplicar un redondeo. Las variables calculadas resultantes se denominan LatRound y LongRound.

LatRound = ROUND([Latitude],1)

LongRound = ROUND([Longitude],1)

Paso 2: la creación de una cuadrícula de coordenadas

El segundo paso es «densificar» los datos en Tableau mediante la creación de una cuadrícula. Las coordenadas de las celdas de la cuadrícula se utilizarán para asociar los valores de obesidad por condado.
Para crear esta cuadrícula, crea una tabla en Excel, que incluirá los valores de longitudes en las filas y latitudes en las columnas. Un pequeño pivote más tarde y obtienes una mesa como esta. No olvides comprobar cuáles son los valores mínimos y máximos de latitud y longitud que necesitas.


Luego, simplemente haz una combinación correcta en esta tabla de Excel. La unión de la derecha permite mantener vacías las mallas para las que no se asocia ningún valor.
Los valores de latitud y longitud de la cuadrícula se denominan respectivamente «cuadrícula de latitud» y «cuadrícula de longitud».

Paso 3: eliminación de puntos vacíos fuera del área geográfica

En el siguiente paso, eliminaremos los puntos que se encuentran fuera del área geográfica que deseamos cubrir. Esto es particularmente importante si deseas reconstruir las fronteras de un país, por ejemplo.

Comencemos visualizando qué celdas de la cuadrícula no tienen valores asociados. La siguiente variable calculada hace que sea muy sencillo hacer esto.

NullDotCheck = IIF(ISNULL([Obesity prevalence (%)]),TRUE,FALSE)

Usando esta variable calculada como guía para el color, obtenemos esto. Las fronteras de los Estados Unidos están comenzando a emerger lentamente, pero aún queda trabajo por hacer.

Ahora vamos a eliminar todos los puntos que están fuera de los límites geográficos de Estados Unidos. Las expresiones LOD nos permiten hacer esto rápidamente. Creamos la variable calculada «NullDotFilter» de la siguiente manera:

[longitude grid]< { FIXED [latitude grid]: MIN({ FIXED [latitude grid], [longitude grid]: MIN(IIF(ISNULL([Obesity prevalence (%)])=false,[longitude grid], NULL))})}
OR
[longitude grid]> { FIXED [latitude grid]: MAX({ FIXED [latitude grid], [longitude grid]: MIN(IIF(ISNULL([Obesity prevalence (%)])=false,[longitude grid], NULL))})}

Una vez que se aplica la variable «NullDotFilter» como filtro, se obtiene (arriba) una visualización que comienza a parecerse a los Estados Unidos.
Puedes ver en la parte inferior que el mapa está formado por líneas horizontales dibujadas a 0,1 grados de latitud entre sí. Dado que todavía hay algunas cuadrículas vacías dentro del territorio (puntos azules en la parte superior del gráfico), estos puntos deben colocarse en la línea de latitud correcta. Por lo tanto, he creado una variable calculada de «datos cero»:

zero data = IFNULL([Obesity prevalence (%)],0)

Pasemos ahora a la parte más divertida, la programación de los “picos” del Joyplot.

Paso 4: altura de los picos

La variable calculada «Y» se crea de modo que la altura del «pico» sea una función del valor asignado a cada punto de la cuadrícula. En mi caso, el ejercicio resultó más complicado de lo esperado porque los valores que procesé (porcentaje de personas obesas por condado) eran relativamente cercanos entre sí.

Y = max([latitude grid])+(4 * (SUM([zero data]) / WINDOW_MAX(SUM([zero data]))))

Para aumentar artificialmente las diferencias entre picos, he introducido un factor de valor de 4. A continuación puede ver la diferencia entre un factor de 1 y un factor de 4.

No olvides poner la variable «cuadrícula de latitud» en detalle (como un valor discreto).

Aun así, las diferencias no fueron muy visibles. Esto me llevó a aplicar colores en forma de cuartiles.

Paso 5: colores según el cuartil

Para hacer más visibles las diferencias y eliminar mallas de cuadrícula sin valor, opté por una coloración por cuartiles. El primer cuartil corresponderá a 0 y se puede asignar al color de fondo del tablero. Ya he explicado la técnica y su origen muchas veces (ver en particular mi tutorial sobre el mapa hexadecimal isométrico).

rank obesity US counties = {FIXED [Year],[County] : AVG([Obesity prevalence (%)])}

rank percentile counties = RANK_PERCENTILE(AVG([rank obesity US counties]))

rank color by quartile = 

if [rank percentile counties]<=1/[quantile]
then 1/[quantile]
ELSEIF [rank percentile counties]<=2/[quantile]
then 2/[quantile]
ELSEIF [rank percentile counties]<=3/[quantile]
then 3/[quantile]
ELSEIF [rank percentile counties]<=4/[quantile]
then 4/[quantile]
END

La variable “rango color por cuartil”, por lo tanto, nos permite colorear nuestros picos para hacerlos más visibles.


Algunos pensamientos adicionales sobre Joyplot

Sin duda, el diagrama de control no es la visualización más sencilla de crear con Tableau. También está lejos de ser adecuado para aplicaciones orientadas a los negocios. Sin embargo, como señaló Alexander Varlamov, su uso con fines periodísticos es ideal. De hecho, la trama de juegos es visualmente atractiva, fácil de entender y, por lo tanto, se presta a informar al público en general.
Sin embargo, en aras de la eficiencia, te aconsejo que compruebes antes de comenzar que los datos que deseas visualizar adopten valores muy diferentes entre sí. Los joyplots más atractivos se obtendrán cuando haya una gran dispersión de datos. En retrospectiva, también creo que la aplicación del joyplot a vastos territorios probablemente dará resultados inferiores. La representación de los desalojos en la región de San Francisco (ver aquí) me parece que se beneficia significativamente del uso del joyplot.



Posted in Data y IT.

Publique su opinión

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *