% of total, candy dots, circles, small multiples, text, waffle chart, trellis chart, table calc, LOD calc, Workout Wednesday

Por: Rosario Gauna @rosariogaunag

En la semana 11 de Workout Wednesday, @RodyZakovich nos preparó un reto diferente y divertido, quizás decidió que merecíamos bajar el nivel de estrés después del reto de @LukeStanke de la semana previa. Link al Reto

En este reto, Rody nos pide crear waffles con círculos distribuidos 20X5 SIN UTILIZAR BLENDING, SIN SHAPES DE CUADROS, SOLO UTILIZANDO TEXTO.

Se deberá mostrar un waffle para cada una de las sub-categorías de productos de Artículos de Oficina, con su porcentaje de ventas con respecto a las ventas totales de la categoría en un color azul y el resto de los puntos en un color gris.

A continuación, detallo los pasos que seguí:

Paso 1: Filtrar los datos por la categoría de “Artículos de Oficina”

Paso 2: Definir las coordenadas (x, y) para cada una de subcategorías, de tal forma que cada una de las 9 sub-categorías tendrá una coordenada única dentro de una matriz de 3 x 3

VARIABLE FÓRMULA
Calcular la variable “x” o columna a ubicarse cada una de las subcategorías COLUMN =

(INDEX()-1) % INT(SQRT(SIZE())) + 1

En este ejercicio, conocemos de antemano que se van a presentar 3 columnas, por lo cual, podemos utilizar una fórmula simplificada

(INDEX() – 1) % 3 + 1

Calcular la variable “y” o renglón a ubicarse cada una de las subcategorías ROW =

INT((INDEX()-1) / INT(SQRT(SIZE()))) + 1

La fórmula simplificada para tres columnas, sería

INT( (INDEX()-1) / 3) + 1

Paso 3: Calcular el campo del “% Sales”. Se calculan las ventas de cada sub-categoría y se divide entre el total de ventas de la categoría.

      % Sales =

{FIXED [Sub-Category] : SUM([Sales])} / {FIXED [Category] : SUM([Sales])} * 100

Paso 4: Calcular el campo del “% Sales Display”. Esta fórmula tiene como finalidad el coincidir con el redondeo de “Ceiling” que utilizó Rody o también conocido como redondeo hacia el entero mayor más cercano. En un inicio, yo había utilizado el redondeo simétrico, pero decidí que era mejor incluir un parámetro para que el usuario decidiera el tipo de redondeo a aplicar.

            % Sales Display =

CASE [Choose Round]

WHEN 1 THEN CEILING([% Sales])

WHEN 2 THEN FLOOR([% Sales])

WHEN 3 THEN ROUND([% Sales],0)

END

Paso 5: Definir el campo “String Candy Dots”. El cual está compuesto por un total de 104 caracteres. 100 caracteres de círculos distribuidos 20 por renglón, más los 4 caracteres de salto de línea. A continuación, se muestran dos de los métodos para definir el string en Tableau.

DEFINICION MANUAL DEFINICION UTILIZANDO FÓRMULA
String Candy Dots =

“●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●
●●●●●●●●●●●●●●●●●●●●”
String Candy Dots =

REGEXP_REPLACE(SPACE(20),’\s’,’\u25cf’)+CHAR(10)+ REGEXP_REPLACE(SPACE(20),’\s’,’\u25cf’)+CHAR(10)+ REGEXP_REPLACE(SPACE(20),’\s’,’\u25cf’)+CHAR(10)+ REGEXP_REPLACE(SPACE(20),’\s’,’\u25cf’)+CHAR(10)+ REGEXP_REPLACE(SPACE(20),’\s’,’\u25cf’)

 

Paso 6: Subdividir el campo de “String Candy Dots” en dos, para manejar dos colores de puntos.

VARIABLE FÓRMULA
Calcular la longitud del string que corresponden al porcentaje de las ventas más 1 carácter adicional por cada 20 puntos del porcentaje de las ventas Length 2nd Part =

[% Sales Display]

+ INT([% Sales Display]/20)

Calcular la primera parte de los puntos, es decir, los de color gris claro.

Se tomarán los caracteres izquierdos del string, que correspondan a la resta de 104 (tamaño total de string) menos la longitud calculada en el primer cálculo de este paso

Candy Dots 1st Part =

LEFT([String Candy Dots],

104 – [Length 2nd Part])

Calcular la segunda parte de los puntos, es decir, los de color azul.

Se tomarán los caracteres de la derecha del string, que correspondan a la longitud calculada en el primer cálculo de este paso.

 

Candy Dots 2nd Part =

RIGHT([String Candy Dots],

[Length 2nd Part])

Paso 7: Mover al tipo de marca detalle (detail) en marks card, la variable de Sub-Category ordenada descendentemente por el monto de las ventas.

Paso 8: Mover al tipo de marca etiqueta (label) en marks card, las variables: Sub-Category, % de Sales Display, Candy Dots 1st Part y Candy Dots 2nd Part

Acomodar las cuatro variables dentro del estante de texto, las dos primeras variables en el primer renglón y las últimas dos variables en el segundo renglón. Y cambiar los textos a los colores deseados.

Estante de Texto

Paso 9: Mover al estante de columnas la variable “Column” y al estante de renglones la variable “Row”.

Aplicar a ambas variables, la opción de Cálculo de Tabla utilizando la opción de “Compute Using” Sub-Category, Candy Dots 1st Part y Candy Dots 2nd Part.

Paso 10: Solo ajuste formatos. ¡Y listo!

Link Tableau Public

D_Small Multiple Grids-Final

Muchas gracias @RodyZakovich por este divertido reto.

 

EJERCICIO EXTRA

Después de este ejercicio de Rody, recordé el diseño de @tableauing de #MakeoverMonday de la semana 10, en donde tenía pequeños waffles y cada punto representaba una respuesta y los colores asignados indicaban el tipo de respuesta obtenida: Correcta, Incorrecta o Nula.

Imagen Rodrigo

Él comentaba que deseaba poder ordenar los puntos por colores, pero aún lo estaba trabajando.

Y recién terminé el reto de Rody, me resultaba mas que tentador probar la técnica en el diseño de Rodrigo, en donde básicamente se requería:

  • El uso de tres colores, uno por tipo de respuesta: 1) Correcta, 2) Incorrecta, 3) Nula
  • Ordenar los colores por tipo de respuesta
  • Manejar una cantidad de puntos o dots variables por país. (Hay países con 20 encuestados, países con 22 encuestados y países con 26 encuestados)
  • Se requería desplegar un máximo de 9 puntos o dots por renglón.

Para este ejercicio, se deben tener calculados previamente por país-pregunta, el número de:

  • Respuestas correctas (# correct)
  • Respuestas incorrectas (# incorrect)
  • Total de personas encuestadas (# Total of Respondent)

 

Paso 1: Definir “String Candy Dots”. El cual está compuesto por un total de 29 caracteres. 27 caracteres de círculos distribuidos 9 por renglón, más los 2 caracteres de caracteres de salto de línea. A continuación, se muestran dos de los métodos para definir el string en Tableau.

DEFINICION MANUAL DEFINICION UTILIZANDO FÓRMULA
String Candy Dots =

“●●●●●●●●●
●●●●●●●●●
●●●●●●●●●”
String Candy Dots =

REGEXP_REPLACE(SPACE(9),’\s’,’\u25cf’)+CHAR(10)+ REGEXP_REPLACE(SPACE(9),’\s’,’\u25cf’)+CHAR(10)+ REGEXP_REPLACE(SPACE(9),’\s’,’\u25cf’)

Paso 2: Calcular el primer sub-string correspondiente a las respuestas correctas.

VARIABLE FÓRMULA
Calcular la cantidad de caracteres del string de respuestas correctas.

Su valor corresponde al número de respuestas correctas más 1 carácter adicional por cada 9 respuestas correctas

Length Correct Answers =

[# Correct]

+ INT([# Correct]/9)

Calcular la primera parte del string que corresponde a las respuestas correctas.

Se tomarán los caracteres izquierdos del string, que corresponden a la longitud, recién calculada.

Candy Dots 1st Part=

LEFT([String Candy Button],

[Length Correct Answers])

Paso 3: Calcular el segundo sub-string correspondiente a las respuestas incorrectas.

VARIABLE FÓRMULA
Calcular la cantidad de caracteres del string, del número de respuestas contestadas (tanto correctas, como de incorrectas). Length Answers with Response =

[# Correct] + [# Incorrect] +

INT(([# Correct]+[# Incorrect])/9)

Calcular la segunda parte del string que corresponde a las respuestas incorrectas.

Se utiliza la función LEFT() para crear primero un sub-string que corresponde al total de respuestas contestadas (correctas e incorrectas).

Y al sub-string recién calculado, se le aplica la función RIGHT() para crear el sub-string de solo las respuestas incorrectas

Candy Dots 2nd Part =

RIGHT(

LEFT([String Candy Button], [Length Answers with Response]),

[Length Answers with Response] – [Length Correct Answers])

Paso 4: Calcular el último sub-string correspondiente a las respuestas sin contestar o nulas.

VARIABLE FÓRMULA
Calcular la cantidad de caracteres del string del total de encuestados (con respuestas correctas, incorrectas y sin contestar) Length Total of Respondent =

[# Total of Respondent]

+ INT([# Total of Respondent]/9)

Calcular la última parte del string que corresponde a las respuestas sin contestar o con valor nulo. Candy Dots 3rd Part =

RIGHT(

LEFT([String Candy Button], [Length Total of Respondent]),

[Length Total of Respondent] – [Length Answers with Response])

 Paso 5: Calcular el número de respuestas correctas por país.

           Label Correct by Country =

{FIXED [Country] : [# Correct]}

Paso 6: Mover al tipo de marca etiqueta (label) en marks card, las variables: Candy Dots 1st Part, Candy Dots 2nd Part y Candy Dots 3rd Part.

Acomodar las tres variables dentro del estante de texto en un solo renglón en el orden de presentación requerido y cambiar los textos a los colores deseados.

Paso 7: Mover al estante de columnas la variable “Topic” y al estante de renglones las variables “Country” y “Label Correct by Country”.

Paso 8: Solo ajuste formatos. ¡Y listo!

Link Tableau Public

Policymaker Report

Muchas gracias @tableauing por compartir diseño.

Espero que hayan disfrutado leyendo este blog.

Si tiene alguna pregunta, no dudes en ponerte en contacto conmigo en Twitter (@rosariogaunag)

¡Saludos!

Rosario Gauna

Advertisements