Sectores, mapa de calor y otros¶
Ejercicio pie-heatmap-others-annex.pdf · PDF
La partida ha terminado y aparece la pantalla de estadísticas. No te enseña un solo gráfico. Te enseña cuatro cosas distintas, porque tienes cuatro preguntas distintas.
¿Cómo se repartió tu daño entre las armas? Un círculo cortado en porciones. ¿En qué zona del mapa se produjeron los combates? Un mapa pintado con color, y el propio juego lo llama heatmap. ¿Cuál fue tu puntuación final? Un número enorme. ¿Y quién hizo qué? La clasificación completa, una tabla sencilla.
Hasta ahora tienes cuatro herramientas: barras, líneas, histograma y dispersión. Esta lección añade las cuatro de esa pantalla de estadísticas. Una de ellas, el gráfico de sectores, es muy fácil de usar mal, así que también construirás uno que miente.
Qué aprenderás
- Construir un gráfico de sectores y enunciar las tres condiciones en las que un gráfico de sectores es aceptable
- Detectar un gráfico de sectores que miente porque sus porciones no son el todo
- Construir un mapa de calor a partir de dos dimensiones y una métrica, y leer un patrón a partir del color
- Cambiar lo que compara un mapa de calor normalizándolo
- Decidir cuándo un único número grande o una simple tabla supera a cualquier gráfico
- Asociar ocho tipos de gráfico con la pregunta que responde cada uno
El gráfico de sectores: partes de un todo¶
Un gráfico de sectores es un círculo cortado en porciones. El círculo es el todo, el 100 %, y cada porción es una parte. Responde a la pregunta ¿qué parte del total es cada elemento?
En la pantalla de estadísticas, el círculo es todo el daño que has infligido y cada porción es un arma. El gráfico de sectores hace una promesa que ningún gráfico de barras hace: estas porciones suman el total.
La idea tiene más de dos siglos. Al ingeniero escocés William Playfair se le atribuye el primer gráfico de sectores, en su libro The Statistical Breviary, publicado en 1801.
Aquí tienes uno honesto de games_clean. En la Unidad 2 creaste la columna owners_tier, que clasifica cada juego según cuánta gente lo posee:
pie
title Juegos de Steam por nivel de propietarios
"Niche" : 17921
"Mid" : 8141
"Hit" : 623
owners_tier |
Significado | Juegos | Porción |
|---|---|---|---|
Niche |
Menos de 20,000 propietarios | 17,921 | 67.2 % |
Mid |
De 20,000 a menos de 1,000,000 | 8,141 | 30.5 % |
Hit |
1,000,000 o más | 623 | 2.3 % |
Puedes decir "dos de cada tres juegos son Niche" sin leer un solo número. Eso es un gráfico de sectores haciendo bien su trabajo.
Tres condiciones, o usa barras¶
Recuerda la jerarquía de Percepción visual: el ojo lee mejor la posición, y un gráfico de sectores le obliga a comparar ángulos, dos puestos por debajo. Así que el gráfico de sectores tiene que ganarse su sitio. Lo hace cuando se cumplen las tres condiciones siguientes:
| Condición | Por qué | El gráfico de nivel de propietarios |
|---|---|---|
| Las porciones son partes de un todo y suman el 100 % | Es la promesa que hace el círculo | Cada juego está en exactamente un nivel |
| Pocas porciones: cinco como máximo | Nadie puede comparar muchos ángulos | Tres porciones |
| Las diferencias son evidentes | Es imposible ordenar ángulos parecidos | 67 %, 31 % y 2 % |
Si falla una condición, la respuesta es un gráfico de barras.
flowchart TB
A{"¿Las porciones son partes de<br>un todo y suman el 100 %?"}
A -- "No" --> BAR["<b>Gráfico de barras</b>"]
A -- "Sí" --> B{"¿Cinco porciones o menos?"}
B -- "No" --> BAR
B -- "Sí" --> C{"¿Las diferencias son evidentes?"}
C -- "No" --> BAR
C -- "Sí" --> PIE["<b>Gráfico de sectores</b>"]
Ya has visto un gráfico de sectores que falla. El arcoíris de 15 porciones con los juegos por año de lanzamiento de Percepción visual incumplía la segunda condición, y además el tiempo tiene un orden que un círculo no puede mostrar.
Ojo: los gráficos de sectores no están prohibidos
Oirás decir "no uses nunca un gráfico de sectores". Es demasiado tajante. Un gráfico de sectores no es incorrecto, es menos preciso. Con dos o tres porciones muy distintas de un mismo todo funciona bien y todo el mundo lo entiende al instante. Quince años en un gráfico de sectores no funciona.
Un gráfico de sectores que miente¶
Ahora, el peligroso. Toma el mismo gráfico y mete publisher, quedándote solo con los diez más grandes:
pie
title Mal a propósito - las diez distribuidoras más grandes
"Big Fish Games" : 284
"SEGA" : 141
"Strategy First" : 129
"Ubisoft" : 123
"Unknown" : 120
"Square Enix" : 95
"Sekai Project" : 94
"Choice of Games" : 92
"Dagestan Technology" : 89
"1C Entertainment" : 85
¿Qué porcentaje de los juegos de Steam tiene Big Fish Games? El gráfico dice que alrededor del 23 %. Casi una cuarta parte de la tienda.
Compruébalo con una consulta:
SELECT ROUND(100.0 * COUNT(*) FILTER (WHERE publisher = 'Big Fish Games') / COUNT(*), 2)
FROM games_clean;
La respuesta es 1.06. Big Fish Games publicó 284 de los 26,685 juegos: alrededor del 1 %. El gráfico dibujó el 23 %.
¿De dónde sale ese 23 %? Esas diez porciones suman 1,252 juegos, y 284 es el 22.7 % de 1,252. El gráfico mostró el porcentaje sobre las filas que se le dieron, y se le dieron diez distribuidoras de 13,951.
| Juegos | Porcentaje de Big Fish Games | |
|---|---|---|
| Las diez distribuidoras más grandes (el gráfico) | 1,252 | 22.7 % |
Todo games_clean (la verdad) |
26,685 | 1.06 % |
Este gráfico incumplió la primera condición: diez distribuidoras no son el todo. Además tiene diez porciones, y una de ellas es el jugador fantasma Unknown de Gráficos de barras y de líneas. El gráfico honesto para esta pregunta es el gráfico de barras ordenado que construiste allí.
Ojo: un gráfico de sectores no siempre muestra porcentajes del total
Un gráfico de sectores muestra porcentajes de las filas que se le dieron. Recorta los datos con un límite de filas o un filtro y las porciones seguirán sumando el 100 %, pero de algo más pequeño. El círculo siempre parece completo. Por eso es tan fácil contar esta mentira sin querer.
El mapa de calor: una cuadrícula pintada con color¶
Un mapa de calor (heatmap) es una cuadrícula. Una dimensión forma las columnas, otra forma las filas, y el color de cada celda muestra una métrica: cuanto más oscura es la celda, mayor es el valor.
En la pantalla de estadísticas, las dos dimensiones son las dos direcciones del mapa, y el color es cuánto se luchó en cada punto. Nadie lee un número exacto en él. Buscas las zonas calientes.
Esa es la forma correcta de leer cualquier mapa de calor. El sombreado de color es el último puesto de la tabla de Cleveland y McGill: el ojo es malo convirtiendo un tono en un número. Pero es muy bueno viendo dónde se agrupan las celdas oscuras.
Un mapa de calor sirve para ver patrones, no para leer valores.
Esta es la pregunta: ¿hay una temporada de lanzamientos de juegos en Steam? Las dos dimensiones son el año de lanzamiento y el mes de lanzamiento, y la métrica es el número de juegos. De 2014 a 2018 salen 5 columnas × 12 filas = 60 celdas, que contienen 24,115 juegos.
Mira primero la cuadrícula de la izquierda. ¿Qué te dice el color? Que 2018 es más oscuro que 2014. La celda más clara es enero de 2014 (61 juegos) y la más oscura es marzo de 2018 (853 juegos).
Pero eso ya lo sabías. El gráfico de líneas de Gráficos de barras y de líneas decía que los lanzamientos se habían disparado. El crecimiento de un año a otro es tan fuerte que lo ahoga todo, y la pregunta sobre las temporadas sigue sin respuesta.
Normalizar: cambiar con qué se compara cada color¶
En la cuadrícula de la izquierda, cada celda se compara con las otras 59. En la de la derecha, cada celda se compara solo con los otros meses de su propio año.
Normalizar un mapa de calor es cambiar con qué se compara el color de cada celda: toda la cuadrícula, su propia columna o su propia fila.
Ahora aparece el patrón. Lee la fila de abajo: enero es el mes más claro en los cinco años. La celda más oscura, el pico de cada año, cambia de sitio:
| Año | Mes más bajo | Mes pico |
|---|---|---|
| 2014 | Enero (61) | Noviembre (146) |
| 2015 | Enero (156) | Septiembre (265) |
| 2016 | Enero (219) | Diciembre (492) |
| 2017 | Enero (386) | Octubre (768) |
| 2018 | Enero (592) | Marzo (853) |
Así que la respuesta honesta es: hay una temporada baja clara, enero, y no hay una única temporada alta. El pico cae en la segunda mitad del año en cuatro de los cinco años, y en marzo en 2018.
Ojo: normalizar no cambia los datos
Las dos cuadrículas contienen los mismos 60 números: puedes leerlos en las celdas. Normalizar solo cambia con qué se compara cada color. Es el mismo movimiento que cambiar la granularidad temporal de una línea: mismas filas, otra pregunta.
Ojo: el mapa de calor no muestra valores exactos
Muestra dónde están las celdas altas y bajas. La figura de arriba imprime el recuento en cada celda para ayudarte a comprobarlo; un mapa de calor real suele mostrar solo color. Cuando el lector necesita los números exactos, muestra los valores en las celdas o usa una tabla.
Los otros: un número, una tabla¶
No todas las preguntas necesitan un gráfico con ejes. Dos de los "gráficos" más útiles de un cuadro de mando (dashboard) no tienen ninguno.
El número grande¶
Un número grande (big number) es un gráfico que muestra un único valor, lo más grande posible.
Es la puntuación final de la pantalla de estadísticas. ¿Cuántos juegos hay en games_clean? No hay nada que comparar, nada que ordenar, ninguna tendencia que leer: la respuesta es 26,685, y la mejor visualización es el propio número.
Piensa en la proporción datos-tinta de Tufte. Un número grande no tiene nada que borrar: cada gota de tinta es dato.
La tabla¶
Una tabla muestra filas y columnas de valores exactos. Es la elección correcta cuando el lector necesita consultar datos concretos.
Es la clasificación completa. Estos son los siete juegos de games_clean con al menos 20 millones de propietarios:
SELECT game, publisher, release_year, price, owners_min
FROM games_clean WHERE owners_min >= 20000000
ORDER BY owners_min DESC;
game |
publisher |
release_year |
price |
owners_min |
|---|---|---|---|---|
| Dota 2 | Valve | 2013 | 0.00 | 100,000,000 |
| Counter-Strike: Global Offensive | Valve | 2012 | 0.00 | 50,000,000 |
| PLAYERUNKNOWN'S BATTLEGROUNDS | PUBG Corporation | 2017 | 29.99 | 50,000,000 |
| Team Fortress 2 | Valve | 2007 | 0.00 | 50,000,000 |
| Paladins | Hi-Rez Studios | 2018 | 0.00 | 20,000,000 |
| Unturned | Smartly Dressed Games | 2017 | 0.00 | 20,000,000 |
| Warframe | Digital Extremes | 2013 | 0.00 | 20,000,000 |
Las filas con el mismo owners_min pueden salir en otro orden en tu pantalla.
Lee la columna price. Seis de los siete juegos más grandes de Steam son gratuitos. Una tabla te deja verlo porque muestra varias columnas de la misma fila una al lado de otra. Un gráfico de barras de owners_min habría mostrado siete barras y habría escondido el dato más interesante.
Ojo: una tabla también es una visualización
Es tentador pensar que una tabla es lo que tienes antes de hacer un gráfico. No siempre. Cuando el lector necesita los valores exactos de unas pocas filas, una tabla es la respuesta final correcta.
La pantalla de estadísticas: ocho herramientas, ocho preguntas¶
Eso hace ocho herramientas. Cada una responde a un tipo de pregunta:
| Gráfico | La pregunta que responde | Se construye con |
|---|---|---|
| Barras | ¿Qué categoría es mayor? | Una categoría y una métrica |
| Líneas | ¿Cómo cambió a lo largo del tiempo? | Una fecha y una métrica |
| Histograma | ¿Cómo se reparte un número? | Una columna numérica |
| Dispersión | ¿Cómo se relacionan dos números? | Dos columnas numéricas |
| Sectores | ¿Qué parte de un todo es cada elemento? | Una categoría con pocos valores y una métrica |
| Mapa de calor | ¿Dónde está el patrón entre dos dimensiones? | Dos dimensiones y una métrica |
| Número grande | ¿Cuál es la cifra que hay que recordar? | Una métrica sola |
| Tabla | ¿Cuáles son los valores exactos? | Cualquier columna, pocas filas |
Lee la tabla desde la columna del medio. No empiezas con "quiero un gráfico de sectores". Empiezas con "¿qué parte...?" y la pregunta elige la herramienta.
Pruébalo: cuatro gráficos para la pantalla de estadísticas¶
Los cuatro gráficos usan el dataset games_clean (consulta Recursos para los datos).
Gráfico 6 — Reparto por nivel de propietarios. ¿Qué porcentaje de los juegos de Steam es Niche, Mid o Hit?
| Paso | Haz esto en Superset | Deberías ver |
|---|---|---|
| 1 | Nuevo gráfico sobre games_clean, tipo de gráfico Pie Chart. Dimensions: owners_tier. Metric: COUNT(*). Create chart |
Tres porciones |
| 2 | Customize, Label Type: elige una opción que muestre el porcentaje | Porcentajes en las dos porciones grandes. Hit no tiene etiqueta: por defecto solo las porciones del 5 % o más la reciben (Percentage threshold) |
| 3 | Save, nombre UT3 · Owners tier share |
El gráfico aparece en la lista de Charts |
Para ver tú mismo el gráfico mentiroso, cambia Dimensions a publisher y Row limit a 10, y actualiza el gráfico. Mira la porción de Big Fish Games y luego ejecuta la consulta de arriba en SQL Lab. No guardes este.
Gráfico 7 — Lanzamientos por mes y año. ¿Hay una temporada de lanzamientos de juegos?
games_clean tiene una columna release_year pero no tiene mes. Añádela como columna calculada, como hiciste en Variables sintéticas.
| Paso | Haz esto en Superset | Deberías ver |
|---|---|---|
| 1 | Datasets, games_clean, editar (el lápiz), Calculated columns, Add item. Llámala release_month |
Una fila nueva con un cuadro para la expresión |
| 2 | El cuadro SQL expression viene con el texto de ejemplo <enter SQL expression here>. Selecciónalo todo, bórralo y escribe la expresión de abajo. Save, y después OK en Confirm save |
El dataset tiene una columna nueva |
| 3 | Nuevo gráfico sobre games_clean, tipo de gráfico Heatmap. X-axis: release_year. Y-Axis: release_month. Metric: COUNT(*) |
Los tres controles rellenos |
| 4 | Filters: release_year, Greater or equal (>=), 2014, Save. Sort X Axis y Sort Y Axis: Axis ascending. Create chart |
Una cuadrícula de 5 columnas × 12 filas, más oscura hacia 2018. El mes 1 es la fila de abajo |
| 5 | Pon Normalize Across en x. Update chart. Después Customize, marca Normalized | Cada año coloreado respecto a sí mismo. La fila de abajo es la más clara en todas las columnas |
| 6 | Save, nombre UT3 · Releases by month and year |
El gráfico aparece en la lista de Charts |
EXTRACT(MONTH FROM release_date)::int
Gráfico 8 — Total de juegos. Nuevo gráfico, tipo Big Number, Metric: COUNT(*). Muestra 26.7k. En Customize, pon Number format en ,d para obtener la cifra exacta, 26,685. Guárdalo como UT3 · Total games.
Gráfico 9 — Tabla de los juegos más grandes. Nuevo gráfico, tipo Table. Query mode: Raw records. Columns: game, publisher, release_year, price, owners_min. Filters: owners_min, Greater or equal (>=), 20000000. Ordering: owners_min [desc]. Deberías ver siete filas, con Dota 2 la primera. Guárdalo como UT3 · Biggest games table.
Si algo parece estar mal
- El mapa de calor da un error de base de datos en cuanto se usa
release_month. Probablemente el texto de ejemplo<enter SQL expression here>sigue delante de tu expresión. Edita el dataset, abre la columna con el + a su izquierda y bórralo. release_monthno aparece en el panel del dataset. La edición del dataset no se guardó, o abriste el gráfico antes. Recarga la página del gráfico.- Los meses del mapa de calor salen en el orden 1, 10, 11, 12, 2. La columna es de texto. La expresión debe terminar en
::int. - Un gráfico de sectores con cien porciones finas.
publishercon Row limit en su valor por defecto (100 en el Pie Chart). Ponlo en 10. - La tabla muestra 1,000 filas. Falta el filtro sobre
owners_min, o falta un cero en20000000.
Ideas clave¶
- Un gráfico de sectores muestra partes de un todo. Solo es aceptable cuando las porciones suman el 100 % de algo real, hay cinco o menos y las diferencias son evidentes. Si no, barras.
- Un gráfico de sectores muestra porcentajes de las filas que se le dieron. Con un límite de filas o un filtro sigue pareciendo completo: Big Fish Games tiene el 1.06 % de los juegos, y un gráfico de sectores del top 10 dibuja el 22.7 %.
- Un mapa de calor es una cuadrícula de dos dimensiones con una métrica como color. Sirve para ver patrones, no para leer valores.
- Normalizar un mapa de calor cambia con qué se compara cada color. Los datos siguen igual; cambia la pregunta.
- Un número grande muestra una cifra para recordar. Una tabla muestra valores exactos para consultar, y puede revelar lo que un gráfico esconde.
- Empieza por la pregunta, nunca por el gráfico: ocho herramientas, ocho tipos de pregunta.
Comprobación rápida¶
1. ¿Cuál de estas es una de las tres condiciones para un gráfico de sectores aceptable?
- Las porciones deben estar ordenadas alfabéticamente
- Cada porción debe tener un color vivo distinto
- Las porciones son partes de un todo y suman el 100 %
- Debe haber al menos diez porciones
Las tres condiciones: partes de un todo, pocas porciones (cinco como máximo) y diferencias evidentes. Si falla una, el gráfico correcto es uno de barras, porque el ojo compara mejor posiciones que ángulos.
2. El gráfico de sectores del nivel de propietarios tiene porciones del 67.2 %, 30.5 % y 2.3 %. ¿Por qué es un gráfico honesto?
- Porque los gráficos de sectores son siempre el mejor gráfico para porcentajes
- Cada juego está en exactamente un nivel, solo hay tres porciones y las diferencias son evidentes
- Porque usa tres colores
- Porque la porción más pequeña es inferior al 5 %
Cumple las tres condiciones: los niveles cubren toda la tabla, tres porciones son pocas, y nadie necesita entornar los ojos para ordenar 67 %, 31 % y 2 %.
3. Un gráfico de sectores de las diez distribuidoras más grandes muestra a Big Fish Games en torno al 23 %. Su porcentaje real sobre todos los juegos es 1.06 %. ¿Qué ha fallado?
- La consulta que cuenta los juegos tiene un error
- Superset redondea los porcentajes hacia arriba
- El gráfico muestra porcentajes de las filas que se le dieron: diez distribuidoras de 13,951 no son el todo
- Los gráficos de sectores no pueden mostrar valores por debajo del 5 %
Las porciones de un gráfico de sectores siempre suman el 100 % de lo que hay dentro. Límitalo a diez filas y 284 juegos pasan a ser el 22.7 % de 1,252 en lugar del 1.06 % de 26,685. El círculo parece completo en ambos casos.
4. ¿Para qué sirve un mapa de calor?
- Para leer valores exactos rápidamente
- Para mostrar partes de un todo
- Para ver dónde se concentran los valores altos y bajos entre dos dimensiones
- Para mostrar la distribución de una columna numérica
Un mapa de calor codifica la métrica como color, que el ojo lee con poca precisión. Su punto fuerte son los patrones: las zonas calientes y frías de una cuadrícula. Los valores exactos pertenecen a una tabla; una columna numérica pertenece a un histograma.
5. En el primer mapa de calor de lanzamientos por mes y año, la columna de 2018 es la más oscura. ¿Por qué eso no responde a \"¿hay una temporada de lanzamientos?\"
- Porque los colores están mal
- Porque 2018 tiene meses ausentes
- Porque cada celda se compara con todas las demás, así que el crecimiento de un año a otro oculta las diferencias entre meses
- Porque los mapas de calor no pueden usar fechas
Con el color comparado entre las 60 celdas, la imagen solo repite lo que dijo el gráfico de líneas: más juegos cada año. Normalizar por año colorea cada año respecto a sí mismo, y entonces aparece la fila clara de enero.
6. ¿Qué cambia cuando normalizas un mapa de calor?
- Los recuentos de las celdas
- El número de filas y columnas
- Con qué se compara el color de cada celda
- El tipo de gráfico
Los 60 números son idénticos antes y después. Solo cambia la comparación: toda la cuadrícula, o la columna de la propia celda. Mismos datos, otra pregunta.
7. Necesitas mostrar los siete juegos más grandes con su distribuidora, año, precio y propietarios. ¿Qué herramienta encaja mejor?
- Un gráfico de sectores con siete porciones
- Un mapa de calor
- Una tabla
- Un número grande
El lector necesita consultar valores exactos en varias columnas de unas pocas filas: eso es una tabla. Además revela que seis de los siete son gratuitos, algo que un gráfico de una sola columna escondería.
8. Una tienda quiere cuatro cosas en su cuadro de mando. Elige las dos opciones correctas.
- El porcentaje de ventas online frente a ventas en tienda: un gráfico de sectores, porque son dos partes de un todo
- Qué día de la semana y qué hora tiene más ventas: un mapa de calor de día de la semana × hora, coloreado por ventas
- Las ventas repartidas entre sus 40 categorías de producto: un gráfico de sectores con 40 porciones
- Los ingresos totales de este mes en la pantalla de la entrada: un diagrama de dispersión
Dos partes de un todo con una diferencia evidente es el mejor caso para un gráfico de sectores. Dos dimensiones y una métrica es un mapa de calor. Cuarenta porciones incumplen la condición de "pocas porciones" (usa un gráfico de barras ordenado), y una cifra para recordar es un número grande.
Ya tienes ocho herramientas y sabes qué pregunta responde cada una. El siguiente paso es el difícil: recibir una pregunta sin ninguna pista sobre qué herramienta elegir. Eso es Elegir el gráfico adecuado.