Durante mi presentación en la conferencia Tableau TC2018, se me pidió que
explicara cómo creé una de mis visualizaciones (enlace a mi presentación)
La visualización anterior se compone de dos partes:
• El gráfico circular de la izquierda representa las transacciones bancarias entre clientes y comerciantes de belleza y bienestar (puntos rojos) agregados por el cliente. Por lo tanto, somos capaces de identificar a los clientes recurrentes de los comerciantes. En la parte superior del círculo están representados los clientes, y en la parte inferior, todos los comerciantes. Este detalle es importante porque determinará los cálculos de coordenadas.
• La visualización a la derecha muestra la distribución de los clientes de estos comerciantes, lo que nos permite brindarnos información sobre sus clientes.
La idea aquí es obtener información sobre la actividad de los comerciantes, que no son nuestros clientes, mediante el uso de las transacciones bancarias de nuestros clientes. Y luego contactar a los comerciantes que parezcan interesantes porque tengan una base de clientes bien establecida o tengan una buena reputación entre nuestros clientes. Este es un caso ficticio.
¿Cómo hacer el gráfico circular ?
1. Como siempre, el primer paso es editar los datos. Necesitamos obtener una estructura como esta a continuación donde se duplica cada línea [origin destination].
Uno puede preparar los datos en Excel, Tableau o Tableau Prep, pero el paso importante es duplicar los datos. Decidí hacerlo en Prep, pero puedes hacerlo en Tableau directamente.
Aquí está la fuente de preparación de Tableau que me permite construir la base de datos (no solo la duplicación).
Si lo haces directamente en Tableau, necesitas dos hojas de Excel:
- Una que contiene sus datos en bruto (aquí las transacciones)
- Otra hoja usada para duplicar datos que contienen solo dos líneas
• origen
• destino
Luego puede unir las dos hojas de Excel en Tableau con un INNER JOIN usando la condición 1 = 1.
2. El diagrama circular se dibuja gracias a las funciones trigonométricas (fue necesario escuchar en la escuela :)). Calcularemos las coordenadas x e y para que podamos ubicar a los diferentes comerciantes y clientes en el círculo. Para mayor claridad, colocaré a todos los clientes en la parte superior del círculo y a los comerciantes (con quienes mis clientes tienen relaciones comerciales) en la parte inferior del círculo. Para colocar los puntos equidistantemente, usaré un campo de mi base de datos "identificación del cliente", que para cada cliente me da un identificador único.
Aquí vamos con los calcúlos :
x = cos (angle)
y = sin ( angle)
angle = if [Origin Destination]="origin"
then [angle customer]
else [angle merchant] END
con angle customer = PI()*[Id Customer]/({ FIXED : MAX([Id Customer])}+1)
igualmente : angle merchant = -PI()*[Id Merchant]/({ FIXED : MAX([Id Merchant])}+1)
Estos cálculos se utilizan para dividir a los comerciantes y clientes en ambos lados del círculo y dividir el círculo en tantas secciones como sea necesario para dar cabida a todos los clientes y comerciantes.
Colocamos :
- en línea: [x]
- en columna: [y]
- en color: [origin destination] (destino en rojo y origen en negro).
Nota: Tiene sentido que los comerciantes estén representados por "destino" porque tienen el destino de la transacción, el origen es el cliente.
Ahora tenemos que trazar las líneas que representan las transacciones entre nuestros clientes y los comerciantes.
Para hacer esto, duplicaremos el eje y agregando una segunda vez y en las líneas.
- Ruta: [id path] = STR ([Id. Client]) + "-" + STR ([Id. merchant])
- detalles: [client] y [merchant]
- tamaño: cantidad de transacciones [amount] para ennegrecer un poco las líneas
Presta atención como siempre a la información del tooltip :)
¿Cómo hacer el gráfico de la derecha?
Este gráfico es mucho más fácil de construir que el anterior; Representa la distribución de clientes para cada uno de los comerciantes. Por lo tanto, podemos determinar la salud de su actividad comercial y si su actividad depende de un número grande o pequeño de clientes leales.
Como he duplicado mis líneas para construir mi visualización anterior, debo tener cuidado de que no genere problemas con algunos cálculos. Si queremos calcular la cantidad total de transacciones por cliente, utilizando la fuente de datos tal como está, tendremos que calcularla:
transaction amount = if [Origin Destination]="destination" then [Amount] ELSE 0 END
Para poder distinguir mejor los datos concentrados, agregué un campo [random ()] y obtienes esta visualización.
Referencias: Tiene maravillosos blogs en Internet en inglés, aquí hay dos ejemplos:
how to do a radar chart por Jonathan Trajkovic
how to do a radial bar chart por Kevin Flerlage
Uno de mis autores favoritos y maestro de la trigonometria : Ludovic Tavernier