En esta ocasión voy a explicar cómo construir un gráfico de carreras de barras, y animarlo con macros que cambien el día de visualización de los 10 países con más datos acumulados.
En este tutorial explico cómo crear una tabla dinámica partiendo de la tabla cargada con Power Query, cómo generar una tabla auxiliar que será el origen de datos del gráfico de barras y cómo animar el gráfico para que simule una carrera de barras del Top Ten de países con más fallecimientos acumulados por Covid-19, carrera que continua y que nadie sabe cuándo acabará...
Preparados, listos ¡YA!
¡Comienza la carrera!
Entradas de la carrera
Si quieres profundizar en cómo se ha preparado la carrera, en estos enlaces están los 5 artículos anteriores sobre esta carrera:
Gráfico Carrera Barras Excel Bar Chart Race
Carreras de Barras por Covid-19 en Excel v2
Tutorial 1 Power Query - Carrera de Barras
Inicio de la carrera
Si has leído los anteriores tutoriales de Power Query sobre esta carrera de barras, ya sabrás cómo extraer, transformar y cargar datos de la Web a una tabla normalizada.
Si has seguido los pasos aplicados en Power Query tendrás un archivo con la tabla normalizada pero, para este ejercicio, es conveniente que comiences descargando el siguiente archivo:
- Enlace a Microsoft OneDrive:
Tutorial Gráfico Carreras Barras PW1.xlsm
- Enlace a Google Drive:
Tutorial Gráfico Carreras Barras PW1.xlsm
Este archivo Excel habilitado para macros contiene todo lo necesario para continuar:
A) Los pasos aplicados en la consulta en Power Query
B) La tabla normalizada con 4 columnas: Country (País); Date (Fecha); Value (Valor acumulado) y Increment (Valor diario), en la hoja: time_series_covid19_deaths_glob
C) Las macros VBA que animarán el gráfico con la carrera de barras, por lo que es necesaria su descarga.
D) No contiene datos de la descarga desde la Web, por lo que la tabla normalizada está vacía.
Instrucciones de la carrera
Partiendo del archivo descargado hay que seguir los siguientes pasos para construir el gráfico de carrera de barras:
1) Abrir el archivo descargado en una versión de Excel con Power Query (ver aquí)
2) Aparece una advertencia de vista protegida. Presionar el botón: Habilitar edición
3) Aparece una advertencia de seguridad. Presionar el botón: Habilitar contenido
4) Actualizar todo desde el menú: Datos > Actualizar todo
5) En la Barra de Estado aparece el mensaje: Ejecutando consulta en segundo plano...
Esta consulta accede a la web y descarga la tabla de datos acumulados en unos minutos.
6) Hacer clic en cualquier parte de la tabla e insertar una tabla dinámica desde el menú: Insertar > Tabla dinámica
7) En la ventana para crear la tabla dinámica hay que mantener la tabla seleccionada y elegir la hoja de cálculo existente: TD_Países!$B$4 (en la celda B4 de esa hoja se creará la tabla dinámica) y presionar el botón: Aceptar
8) Seleccionar Date como Filas de la tabla dinámica.
9) Desagrupar las fechas haciendo clic con el botón derecho del ratón para mostrar el menú contextual y seleccionar: Desagrupar
10) Seleccionar los demás campos de la tabla dinámica: Country en Filas y Accumulated y Daily en Valores.
11) Seleccionar la fila 6 y en el menú: Vista > Inmovilizar > Inmovilizar paneles
12) Editar las etiquetas de las columnas de la tabla dinámica:
Celda B4: Date / Country
Celda C4: Accumulated
Celda D4: Daily
13) Cambiar el diseño de la tabla dinámica desde el menú: Diseño > Estilos de tabla dinámica, seleccionando un estilo oscuro, por ejemplo: gris oscuro.
14) Desde el menú: Análisis de tabla dinámica > Insertar escala de tiempos
15) Seleccionar Date y presionar el botón: Aceptar, con lo que se crea la escala de tiempos.
16) Seleccionar el período en Días
17) En la escala de tiempos, desmarcar: Encabezado y Nivel de tiempo
18) Cambiar el estilo de la escala de tiempos, por ejemplo: Gris claro
19) Aumentar la altura de la escala de tiempos para que se vea la barra de desplazamiento.
20) Seleccionar un día en la escala de tiempos, por ejemplo: el 1 de junio de 2021, para filtrar la tabla dinámica por ese día, con los datos acumulados y diarios de cada país para ese día.
21) Seleccionar la escala de tiempos, cortar presionando las teclas: Control + X
22) Seleccionar la hoja 'Carrera' y pegar la escala de tiempos cerca de la celda H2, presionando las teclas: Control + V
23) Seleccionar la celda C6 de la tabla dinámica, hacer clic con el botón derecho del ratón y seleccionar Ordenar > Ordenar de mayor a menor, con lo que se ordenará por los países con más datos acumulados.
24) Crear las fechas máxima y mínima de la extracción de
datos en las celdas de la hoja 'TD_Países':
F2 - Texto: Fecha Mínima:
F3 - Texto: Fecha Máxima:
Celda G2 - Fórmula: =MIN(time_series_covid19_deaths_global[Date])
Celda G3 - Fórmula: =MAX(time_series_covid19_deaths_global[Date])
25) Crear nombres (en el menú: Fórmulas > Administrador de nombres) para las celdas:
G2: Fecha_Mínima
G3: Fecha_Máxima
26) Cambiar el nombre de la tabla dinámica: TD_Países
27) La tabla dinámica no será el origen del gráfico de barras, sino que hay que crear una tabla auxiliar con los 10 países con más datos acumulados (Top Ten) y ¡en orden inverso! para que en la gráfica se vean arriba las barras más largas. En la hoja 'TD_Países' editar las siguientes celdas:
F5 - Texto: País
G5 - Texto: Acumulado
G6 - Fórmula: =C15
28) Con la celda G6 seleccionada, en el menú: Insertar > Tabla, teniendo marcado: La tabla tiene encabezados, presionar el botón: Aceptar
29) Cambiar el estilo de la tabla con el menú: Diseño de tabla > Estilos rápidos, seleccionando un estilo Medio, por ejemplo: Gris claro.
30) Editar la celda F6 con la fórmula: =SI([@Acumulado]=0;"";B15)
31) Cambiar el nombre de la tabla: Tabla_TOP10_Países
32) Desde el menú: Diseño de tabla > Cambiar tamaño de tabla, con el rango para 10 países: $F$5:$G$15, y presionar el botón: Aceptar
33) En el menú: Diseño de tabla > Opciones de estilo de tabla, marcar: Fila de totales
34) Comprobar que en la celda G16 aparece el valor máximo, con la fórmula: =SUBTOTALES(104;[Acumulado])
35) Hacer referencia a ese subtotal con el máximo del Top Ten, seleccionando la celda G16 y desde el menú: Fórmulas > Administrador de nombres > Nuevo, editar el nombre: Máx_Día y presionar el botón: Aceptar
36) Ahora toca editar manualmente las celdas del rango
F7:G15 para obtener datos invertidos de países y valores acumulados, para lo
que hay que modificar las fórmulas de las celdas:
Hay que observar que los datos están cruzados, con el país con más datos acumulados abajo en la tabla auxiliar de la derecha, en lugar de estar arriba como en la tabla dinámica de la izquierda. La tabla auxiliar tendrá esta apariencia:
37) Seleccionar el rango G6:G16 y con el botón derecho del ratón abrir el menú contextual y seleccionar: Formato de celdas, en la pestaña Número, en la categoría Personalizada, editar el Tipo: #.##0;;;
38) Seleccionar la celda B5 y en el Cuadro de nombres escribir: Fecha_Gráfico
39) Seleccionar la celda F5 y en el menú: Insertar > Barras 2D > Barras agrupadas
40) Con el gráfico seleccionado, cortarlo con las teclas:
Control + X, y pegarlo en la hoja 'Carrera' con las teclas:
Control + V
41) Con el gráfico seleccionado, en el menú: Diseño de gráfico > Estilos de diseño > Cambiar colores, y seleccionar: Paleta monocromática 7
42) Hacer clic en una de las barras horizontales, con lo que se
seleccionan todas las barras. Hacer clic con el botón derecho del ratón y,
en el menú contextual, seleccionar:
Dar formato a serie de datos... En
Opciones de serie editar el Ancho de rango: 50%, con lo que
las barras horizontales serán más gruesas.
43) Hacer clic en el Título del gráfico y en la barra de fórmulas escribir la celda dónde está la fecha del gráfico: =TD_Países!$B$5
44) Marcar en negrita: el Título del gráfico y los Ejes vertical y horizontal
45) Hacer clic con el botón derecho del ratón en el Eje horizontal y seleccionar: Dar formato al eje...
En las opciones del eje, en Etiquetas, cambiar la posición de la etiqueta: Alto
46) Hacer clic con el botón derecho del ratón en una de las barras horizontales, y en el menú contextual seleccionar: Agregar etiqueta de datos
47) Hacer clic en una de las etiquetas de datos, con lo que se seleccionan todas las etiquetas, y ponerlas en negrita.
48) Hacer clic en las líneas de división verticales y eliminarlas con la tecla: Supr
49) Este paso es muy IMPORTANTE para que funcionen las macros: Seleccionar el gráfico y cambiar su nombre en el Cuadro de nombres, escribiendo: Gráfico Carrera Barras
50) Seleccionar el gráfico, hacer clic con el botón derecho del ratón y seleccionar: Asignar macro, eligiendo la macro: CorrerFechas y presionar el botón: Aceptar
Si has seguido todos estos 50 pasos, y alguno más que se me olvida, habrás construido un gráfico de barra así:
Y haciendo clic sobre el gráfico actuarán las macros que animarán la carrera de barras.
Quien tenga interés en estudiar las macros puede verlas en el Editor VBA que se abre pulsando las teclas: Alt + F11
Si me animo puede que explique cómo funcionan las macros, pero para eso debo recibir comentarios animándome a hacerlo, pues este tema ya es demasiado extenso.
Vídeo de la carrera
Pronto publicaré un vídeo donde explicaré los pasos anteriores para crear un gráfico de barras a partir de una tabla de datos acumulados y animarlo como si fuera una carrera de los 10 países con más datos acumulados por día.
Espero que si has leído esto ya seas capaz de usar Power Query y de animar tus gráficos.