Tutorial Tableau 04. Cuadros de mando con Tableau

Herramientas: Tableau, Qgis

Aviso: Este documento es un complemento a las sesiones que imparto sobre visualización de datos y analítica visual, y en ningún caso pretende ser un manual comprehensivo sobre Tableau.

Introducción

Para este ejercicio vamos a descargar los datos directamente de la web de Bikeshare.

En la web encontramos más datos que los disponibles en kaggle.com. Antes de empezar a trabajar directamente en Tableau tenemos que preparar los datos.

Comparar indicadores

Antes de preparar el cuadro de mando propiamente dicho, vamos a comparar los indicadores a distinto nivel de agregación, para ver cómo se comportan (en el caso de que haya un alto grado de correlación entre ellos podremos prescindir de alguno y crear gráficas más simples).

Para trabajar usaremos el archivo puntos.csv.

A nivel de trayecto

Diagrama inicial

Ejemplo paso a paso

A este nivel no podemos utilizar el indicador Días sin usar ya que este indicador está calculado para cada bicicleta. Por lo tanto, vamos a comparar la distancia recorrida y el tiempo de uso de cada trayecto; como ámbas variables son cuantitativas, vamos a crear un diagrama de dispersión.

  • MIN([Duracion real]) a columnas (para no sumar valores duplicados).
  • MIN([KM recorridos]) a filas (idem).
  • trip_id a detalle

Diagrama de dispersión inicial

No parece haber ninguna correlación entre ambos indicadores. Para ratificar nuestra primera impresión, añadimos una línea de tendencia y revisamos los valores obtenidos del modelo.

Diagrama con línea de tendencia

Si añadimos una dimensión a la vista para añadir contexto seguimos sin obtener patrones claros.

Líneas de tendencias por `passholder_type`

Técnicas para lidiar con overplotting

Ánalisis > Cluster

Funcionalidad de Tableau

NOTA: esta funcionalidad puede requerir bastantes recursos (especialmente en equipos con pocos recursos), por lo que puede parecer que Tableau ha dejado de funcionar correctamente.

En este caso podemos utilizar la herramienta de análisis de clústeres. Tableau tomará las dos medidas para crear el modelo, pero podemos añadir más medidas y/o dimensiones (en el caso de las dimensiones, Tableau las agregará con la función ATTR(), que devuelve el valor * en el caso de que dos registros tengan valores distintos; por eso, no podemos usar la dimensión punto, pero sí passholder_type).

Configuración por defecto de la funcionalidad de clusterización

Configuración modificada: una dimensión añadida, 4 grupos

Si queremos obtener más información sobre el modelo de clústeres generado por Tableau, debemos hacer click en el botón derecho de la píldora Clústeres y acceder a Describir clústeres.

Descripción de los clústeres generados

Si queremos guardar el modelo, tenemos que llevar la píldora Clústeresa la pestaña Datos.

Información sobre la funcionalidad de clustering en la página de ayuda de Tableau

Conexión con R

Ejemplo paso a paso

Otra opción que tenemos es conectar Tableau con R para que sea este el que hagas los cálculos. Para ello necesitamos ejecutar un servidor de R (puede ser en local), y conectar Tableau a ese servidor.

Para ejecutar un servidor de R en local podemos usar el paquete Rserver en una consola de R.

install.packages(“Rserve”) # si no tenemos el paquete ya instalado
library(Rserve)
Rserve()

Una vez Rserve está en marcha, podemos configurar y testar la conexión de Tableau con R. Ayuda > Configuración y rendimiento > Administrar conexión de servidor externo.... Si estamos ejecutando el servidor de R en local, el servidor será localhost y el puerto por defecto 6311.

Configurar la conexión con el servidor R en Tableau

Ahora, podemos crear campos calculados que envíen los datos de Tableau a R, se calculen en R y obtengamos el resultado de los cálculos. Por ejemplo, para crear un modelo de clusters con dos indicadores numéricos y una dimensión, podemos usar este campo calculado:

// Clusters R

SCRIPT_INT('
Train <- data.frame(.arg1,.arg2,.arg3)
TrainNumeric <- lapply(Train, as.numeric)
TrainNumeric <- as.data.frame(TrainNumeric)
kmeans(TrainNumeric,4)$cluster;',
    MIN([KM recorridos]), MIN([Duracion real]),ATTR([Passholder Type]))
  • La función SCRIPT_INT() indica el tipo de valor que se espera como resultado (valores de tipo número entero). Las otras funciones disponibles son SCRIPT_REAL(), SCRIPT_BOOL() y SCRIPT_STR().
  • Estas funciones tienen dos partes: el script de R, y las variables de Tableu que queremos usar en el cálculo
    • En el script de R, las variables .arg1, .arg2… hacen referencia a las variables de Tableau, en el orden que se pasan a la función.
  • Estas funciones envían los datos resultantes del cálculo de tabla de la vista (es decir, después de aplicar filtros…), por lo que hemos de tener muy claro qué datos se están enviando a R. Si tenemos alguna duda, podemos usar la función Duplicar como tabulación cruzada para echar un vistazo a los datos que se envían a R. Puede ser que tengamos que realizar alguna modificación al cálculo de tabla para que R pueda computar los datos.

En nuestro caso, por ejemplo, si aplicamos directamente el campo calculado Clusters R a Color obtendremos el error

Error a la hora de calcular los clusters

Error `No es posible completar la acción
Se ha producido un error durante la comunicación con el Servicio RServe.
Error in sample.int(m, k) :
  cannot take a sample larger than the population when 'replace = FALSE'

En este caso, tenemos que cambiar el cálculo de tabla para que se compute a nivel de Trip Id, no Tabla (a lo largo), que es el cálculo por defecto.

Resultado de aplicar los cluster calculador por R a color

Documento «Uso de R y Tableau»

NOTA: además de R, Tableau puede aceptar scripts de Python y Matlab. Más información sobre servicios externos en Tableau
Ejemplos de la TC18

A nivel de bicicleta

Matriz de scaterplots

Ahora vamos a ver cómo se comportan los indicadores si los agregamos a nivel de bicicleta, ya que queremos usar estos indicadores para detectar bicicletas que revisar. A este nivel de agregación, podemos comparar los tres indicadores, por lo que vamos a crear una matriz gráfica de correlaciones.

Ya sabemos crear un diagrama de dispersión; simplemente tenemos que llevar una medida a Columnas y otra a Filas, y desagregar los datos al nivel que nos interese (en este caso, a nivel de bicileta con bike_id, llevando esta dimensión a Detalle).

Para crear la matriz gráfica propiamente dicha, tenemos que añadir todas las medidas que queramos comparar a Columnas y esas mismas medidas a Filas pero en orden inverso.

Matriz de scaterplots

Además podemos añadir líneas de tendencia desde la pestaña de Análisis.

Matriz de scaterplots con líneas de tendencia

En este caso, parece haber cierta correlación positiva entre distancia y tiempo de uso acumulados y no hay correlación entre estos indicadores y el indicador Días sin usar (aunque gráficamente pueda parecer que la hay entre Días sin usar y KM recorridos, no hemos de olvidar que el overploting de la zona izquierda nos oculta el hecho de que hay muchísimas más observaciones en esa banda que las que se acercan a la línea de tendencia).

En cualquier caso, y de cara a elaborar el cuadro de mando que nos ayude a detectar las bicicletas que hemos de revisar, vamos a mantener los tres indicadores.

Alternativas gráficas

La matriz de scaterplots no es la única forma que tenemos para comparar gráficamente los tres indicadores. Aquí tenemos algunas alternativas.

Scaterplot densificado

Desde la versión 2018.3 (noviembre de 2018) Tableau cuenta con la marca Densidad, que permite usar funciones de densificación para aclarar gráficas con problemas de overploting.

Scaterplot densificado

Heatmap

Los próximos dos ejemplos no se basan en todas las observaciones, sino en un estadístico de resumen (por ejemplo, R o R<sup>2</sup>) obtenidos de un modelo.

Heatmap para el valor de R<sup>2</sup>

SNA

Modificando la estructura de los datos, podemos crear un grafo de redes; cada indicador sería un nodo, y podemos usar los valores de R o R<sup>2</sup> para modificar el grosor de las aristas, y el valor (positivo o negativo) para el color (Tableau no es la mejor herramienta para crear grafos de redes).

Grafo de red

Preparar el cuadro de mando

Los cuadros de mando o dashboards permiten combinar varias gráficas en una sola pantalla. A fin de que el cuadro de mando resulte realmente útil, a la hora de diseñarlo deberíamos tener en cuenta estos criterios:

  • Situation awareness de Few. Depende en gran medida de los datos disponibles, especialmente a la hora de poder integrar modelos de predicción.
  • Multiple Linked Views (MLV): las gráficas deberían adaptarse a las acciones del usuario; es decir, si el usuario filtra ciertos valores en una gráfica, el resto debería reflejar esos cambios.
  • Overview First, Zoom and Filter, Then Details-on-Demand

Nuestro cuadro de mando va a mostrar tres gráficas complementarias, y permitirá al usuario fijar los umbrales para los tres indicadores:

  • Diagrama de dispersión con las bicicletas a revisar destacadas gráficamente.
  • Lista de las bicicletas a revisar con datos básicos.
  • Mapa con los puntos en los que se ha visto por última vez cada bicicleta.

Todos los datos mostrados en las tres gráficas se actualizarán cuando el usuario varíe cualquiera de los parámetros.

Scaterplot básico

El diagrama de dispersión será la gráfica principal del cuadro de mando. La configuración básica es la siguiente:

  • SUM([Duracion real])/2 a Columnas.
  • SUM([KM recorridos])/2 a Filas.
  • Bike Ida Detalle.

Uso de conjuntos para destacar marcas

Los conjuntos (o sets) son una funcionalidad de Tableau que permite crear dos subconjuntos de marcas a partir de condiciones aplicadas a una dimensión, y suelen usarse principalmente para filtrar marcas y colorearlas de forma binaria (para destacar ciertas observaciones).

En este ejercicio, vamos a crear todos los conjuntos a partir de la dimensión Bike Id, que es la base del cuadro de mando.

Ejemplo paso a paso

Conjuntos estáticos

Los conjuntos se crean a partir de una dimensión, por lo que accedemos al dialogo Crear > Conjunto haciendo click en el desplegable de la píldora Bike Id.

Diálogo `Crear conjunto`

La ventana Crear conjunto ofrece tres formas de crear los conjuntos (los tres métodos pueden combinarse):

  • General: permite seleccionar manualmente qué valores de la lista están dentro del conjunto.
  • Condición: podemos establacer una condición a partir de otra variable, cuyo resultado sea binario (verdadero/falso). Dependiendo de si la variable es una dimensión o una medida, las opciones de configuración serán distintas. Para configuraciones más complejas, podemos editar directamente una fórmula con resultado binario.

Opciones de configuración por `Condición`

  • Principales: para hacer un top 10, por ejemplo, a partir de una medida.

Opciones de configuración por `Principales`

Vamos a configurar los siguientes conjuntos:

  • Muchos kilometros: principales 25 superiores por suma de KM recorridos.

Configuración del conjunto `Muchos kilometros`

  • Muchos minutos: principales 25 superiores por suma de Duración real.
  • Muchos días sin usar: principales 25 superiores por suma de Días sin usar.

Una vez creados los conjuntos, podemos usarlos para colorear las marcas (en el ejemplo, hemos modificado los colores por defecto de Tableau para que las observaciones destaquen más).

Hemos llevado el conjunto `Muchos kilómetros` a la marca color

Conjuntos combinados

¿Cómo podríamos destacar al mismo tiempo las bicicletas con más kilometros y más minutos? A la hora de configurar los conjuntos solo podemos indicar una condición.

Sin embargo, podemos combinar dos conjuntos, con las opciones de unión (join) habituales. Para combinar dos conjuntos, los selecionamos y accedemos al menú Crear un conjunto combinado.

Vamos a crear un primer conjunto combinado Muchos kilometros y minutos usando el operador AND. Este nuevo conjunto cruzará los dos conjuntos y obtendremos como resultado únicamente las bicicletas que aparecen en los dos conjuntos primarios (si es que existen).

Conjunto combinado `Muchos kilómetros y minutos`

Conjunto combinado llevado a color

Finalmente, creamos un último conjunto combinado Revisar para combinar Muchos kilometros y minutos con Muchos minutos sin usar, esta vez con el operador OR, ya que las observaciones de ambos grupos no intersectan.

Conjunto combinado `Revisar` a color

Conjuntos dinámicos

Si combinamos la definición de un conjunto con parámetros que el usuario pueda modificar, obtendremos conjuntos dinámicos, que se adaptan a las acciones de los usuarios.

Vamos a configurar estos tres parámetros, adecuando el rango al del indicador en cuestión.

  • Mínimo de kilometros
  • Mínimo de minutos
  • Mínimo de días sin usar

Configuración del parámetro

Si añadimos los controles de parámetro a la vista y probamos a manipularlos observaremos que nada cambia en el gráfico. Esto se debe a que aún no hemos vinculado los conjuntos con los parámetros.

Para ello, vamos a editar los conjuntos de cada indicador, indicando una condición por fórmula (y tenemos que desactivar la opción para ver los 25 principales).

  • Conjunto Muchos días sin usar: [Días sin usar] > [Mínimo de días sin usar].
  • Conjunto Muchos kilometros: SUM([KM recorridos]/2) > [Mínimo de kilometros].
  • Conjunto Muchos minutos: sum([Duracion real]/2) > [Mínimo de minutos].

Ahora, si modificamos los parámetros, los puntos coloreados se adaptarán a las nuevas condiciones.

Vídeo de la TC18

Toque final: líneas de tendencia vinculadas a parámetros

Para que el usuario sea más consciente de sus acciones, vamos a crear dos líneas de referencia (una para la distancia y la otra para el tiempo), que se adaptarán al valor indicado por el usuario en el parámetro.

Vinculamos las líneas de referencia a los parámetros que estamos usando en la vista

También usaremos los conjuntos para destacar aún más las bicicletas a revisar jugando con los canales Tamaño y Forma.

El sistema en acción

Tabla

La segunda gráfica va a consistir en una tabla con la información de los tres indicadores para las bicicletas que hay que revisar según los parámetros del usuario.

  • Bike Id a Filas
  • Conjunto Revisar a Filtros: como los conjuntos están vinculados a los parámetros de usuario, el filtro se actualizará si el usuario modifica cualquiera de los parámetros.

Para mejorar la legibilidad, modificaremos los alias de las columnas para que no reflejen el cálculo.

Editar alias de columnas

Nombres de medidas y Valores de medidas

Estos dos campos generados automáticamente por Tableu nos permitirán dar estructura a la tabla, para mostrar el valor de una medida en cada columna.

Para ello, llevamos la píldora Nombres de medida a Columnas y Valores de medida a texto. Tableau creará una tabla con todas las medidas, pero podemos eliminar, añadir, reordenar o realizar cálculos ad hoc en las píldoras del estante Valores de medidas.

Configuración de la tabla con nombres y valores de medidas

Mapa

Finalmente, vamos a crear un mapa en el que se localiza el último avistamiento de cada bicicleta que hay que revisar.

Para ello, necesitaremos un nuevo campo calculado que usaremos para filtrar todos los registros en los que aparece cada bicicleta a revisar, salvo la de la última fecha.

// Filtro último uso de cada bicicleta

[Time] == {FIXED [Bike ID] : MAX([Time])}

Configuramos el mapa de la siguiente forma:

  • Bike Id a Detalle
  • Prom(Start Lon) a Columnas (no hace falta desagregarla, ya que vamos a filtrar todos los registros menos uno)
  • Prom(Star Lat) a Filas
  • Conjunto Revisar a Filtros
  • Filtro último uso de cada bicicleta a Filtros

Mapa con los últimos avistamientos de las bicicletas a revisar

Montar el cuadro de mando

Los cuadros de mando (dashboard) permiten combinar una o más gráficas ya creadas en una únic vista, y son la forma principal de compartir y comunicar nuestros análisis

Interfaz para crear cuadros de mando

  • Pestaña Dashboard:
    • Tamaño: permite indicar el tamaño del cuadro de mando
    • Hojas: lista con las gráficas creadas y que podemos añadir al cuadro de mando
    • Objetos: otros objetos que podemos añadir al cuadro de mando
  • Pestaña Trazados: permite una maquetación más precisa de cada uno de los elementos disponibles en el cuadro de mando.

Opciones de la pestaña `Trazado`

Layout

Para agregar gráficas al cuadro de mando, simplemente tenemos que arrastrarlas desde Hojas a la zona de trabajo. La primera gráfica que arrastremos ocupara todo el área disponible. A partir de la siguiente, Tableau mostrará una zona gris a la que podemos llevar la nueva gráfica (luego podemos redimensionarla).

Al añadir más de una segunda vista, Tableau muestra distintas posibilidades de maquetación

De momento, vamos a llevar las gráficas Scater INDICADORES, tabla y mapa, de tal forma que el diagrama de dispersión ocupe la mitad superior del cuadro de mando, la tabla aparezca en la parte izquierda inferior, y el mapa en la derecha inferior.

Las gráficas se adaptarán al espacio que les dejemos en el cuadro de mando, tomando como referencia su propia configuración inicial:

Configuración inicial de la gráfica

Pero podemos volver a cuadrar cada gráfica directamente desde el cuadro de mando.

Podemos cambiar la configuración de encuadre directamente desde el cuadro de mando

También podemos cambiar el tamaño del contenedor estirando desde los extremos.

Redimensionamos objetos del cuadro de mando tirando de sus extremos

A modo de ejercicio, vamos a recrear este bosquejo inicial de cuadro de mando:

Maquetación inicial

Mejoras

Las siguientes mejoras siguen el precepto de ofrecer mayor detalle al usuario según se interese por un subconjunto de datos o una observación concreta.

Acciones de usuario

Acción de resaltado (Highlight)

Tableau permite configurar acciones que responden a las interacciones del usuario con las marcas de las gráficas. Hay tres tipos de acciones:

  • Filtro: el/los valor/es seleccionado/s sirve/n como filtro para otras gráficas.
  • Resaltar: el/los valor/es seleccionado/s se resalta/n en otras gráficas
  • Ir a la URL...: el valor seleccionado se usa para pasar una URL al objeto web, que crea una especie de iframe en el cuadro de mando.

Configuración de la acción de resaltado

En el ejemplo, creamos una acción de resalte para que al seleccionar haciendo click (o creando un área de selección) en cualquiera de las gráficas, el o los objetos seleccionados se resalten en el resto de las gráficas.

Vídeos de la TC18

Título dinámico

En este paso vamos a crear una gráfica que funcionará a modo de título del cuadro de mando. La idea es mostrar el recuento de bicicletas a revisar dependiendo de los valores de parámetros definidos por el usuario.

Para ello, creamos una gráfica con las mismas dimensiones y filtros que hemos usado en el mapa, ya que de esta forma obtendremos exactamente el número de marcas (que en este caso representan a las bicicletas).

  • Bike Id a Detalle
  • Conjunto Revisar a Filtros
  • Filtro último uso de cada bicicleta a Filtros

Además, crearemos un campo calculado con la siguiente fórmula para obtener el número de registros de la tabla resultante:

// LBL Nº bicis

"Total de bicicletas a revisar: " + STR(TOTAL(SUM([Número de registros])))

La formula concatena un texto con el valor obtenido de una función de tabla que sirve para obtener el número de registro (convertido a su vez a cadena para poder concatenarlo).

Llevamos este campo a Texto para crear la gráfica propiamente dicha.

Finalmente, sólo nos queda añadir esta nueva gráfica a la parte superior del cuadro de mando

El título dinámico en acción

Gráficas en descripciones emergentes

Tableau permite incluir cualquier gráfica dentro de una Descripción emegente de otra gráfica. Para ello, simplemente tenemos que crear una gráfica, acceder a la gráfica en la que queremos insertarla y usar la opción Insertar > Hojas de la configuración de la descripción emergente.

Incluimos una gráfica en una descripción emergente mediante la opción `Insertar > Hojas`

En este ejemplo, al pasar el ratón por los puntos del mapa se nos muestra una descripción emergente con información básica sobre la estación y un timeline doble con información sobre la distancia y el tiempo acumulado de cada bicicleta (hemos fijado el eje Time para que de esta forma se aprecie también el tiempo que lleva la bicicleta sin ser usada).

Las gráficas incrustadas en la descripción emergente en acción

Ejemplos de la TC18

Contenidos relacionados