Saltar a contenido

Elegir el gráfico adecuado

Ejercicio choosing-the-right-chart-annex.pdf · PDF

Ya has construido seis tipos de gráfico: barras, líneas, histograma, dispersión, sectores y mapa de calor. Cada vez, alguien te dijo cuál tenías que hacer. Ahora llega a tu mesa una pregunta nueva: "¿Los juegos mejor valorados venden más?" ¿Cuál de los seis abres?

La mayoría de la gente responde con el gráfico que más le gusta. Eso es elegir una herramienta por su color. En esta lección dejas de elegir por gusto: la pregunta decide, y aprendes a leer lo que te está pidiendo.

Qué aprenderás

  • Clasificar cualquier pregunta como comparación, evolución, distribución, relación o composición
  • Nombrar las columnas que toca una pregunta y su tipo de dato: categoría, número o fecha
  • Elegir el gráfico a partir de una tabla de decisión y justificarlo en una frase
  • Detectar dos trampas: una composición con demasiadas partes, y una pregunta que no necesita ningún gráfico
  • Construir un mapa de calor y un diagrama de dispersión en Superset a partir de una pregunta escrita, sin receta para el tipo de gráfico

El bloque decide la herramienta

En el videojuego de crafteo de este módulo, nadie pica piedra con una pala. Decide el bloque que tienes delante: pico para la piedra, hacha para la madera, pala para la tierra. Picar, talar y cavar son trabajos distintos, y cada trabajo tiene su herramienta.

Con los gráficos pasa lo mismo. Mantenemos esta analogía durante toda la página:

En el juego En el trabajo con datos Ejemplo
El bloque que tienes delante La pregunta que alguien te hace "¿Qué distribuidora ha lanzado más juegos?"
El trabajo (picar, talar, cavar) El tipo de pregunta Comparación
El material del que está hecho el bloque Las columnas que toca la pregunta, y su tipo publisher (categoría) y un recuento (número)
La herramienta El gráfico Gráfico de barras

Así que cada pregunta se lee dos veces antes de tocar Superset:

  • ¿Qué tipo de pregunta es? Hay cinco trabajos.
  • ¿Qué columnas toca, y de qué tipo?

Con esas dos respuestas, el gráfico deja de ser cuestión de opinión.

Cinco trabajos que puede pedir una pregunta

El tipo de pregunta es lo que el lector quiere hacer con los números: ordenarlos, seguirlos en el tiempo, ver cómo se reparten, ver si dos de ellos se mueven juntos, o ver cómo un todo se divide en partes.

Trabajo La pregunta suena así Ejemplo sobre games_clean
Comparación "¿Cuál tiene más?" "¿Quién es el primero?" ¿Qué diez distribuidoras han lanzado más juegos?
Evolución "¿Cómo ha cambiado con el tiempo?" ¿Cómo ha cambiado el número de juegos lanzados por año?
Distribución "¿Cómo se reparten los valores?" "¿Qué es lo típico?" ¿Cómo se reparten los precios de los juegos de pago?
Relación "Cuando uno sube, ¿sube el otro?" ¿Los juegos con mejor Metascore alcanzan más propietarios?
Composición "¿Qué parte del todo es cada elemento?" ¿Qué parte del catálogo es Niche, Mid y Hit?

Aquí tienes los cinco trabajos, más un sexto panel que conocerás enseguida, todos dibujados a partir de la misma tabla de 26,685 juegos de Steam:

Seis gráficos pequeños dibujados a partir de la tabla games_clean, uno por tipo de pregunta: un gráfico de barras de las cinco distribuidoras más grandes, un gráfico de líneas de los juegos lanzados por año, un histograma de precios, un diagrama de dispersión del Metascore frente a la media de propietarios, un gráfico de sectores de los tres niveles de propietarios y un mapa de calor de la franja de precio por nivel de propietarios

Una tabla, seis imágenes completamente distintas. Ninguna es "el gráfico de los juegos". Cada una es la respuesta a una pregunta diferente.

¿De dónde salen estos cinco trabajos?

No son una regla de este curso. En 2006 Andrew Abela publicó un diagrama de una página, Chart Suggestions: A Thought-Starter, que parte de una pregunta, "¿Qué te gustaría mostrar?", y ofrece cuatro respuestas: comparación, distribución, composición y relación. Nosotros separamos la "comparación a lo largo del tiempo" en un trabajo propio, la evolución, porque es la que más te vas a encontrar.

Lee el material: tres tipos de columna

Un trabajo es solo la mitad de la decisión. Un pico sirve para picar, pero aún necesitas saber si el bloque es piedra u obsidiana.

El tipo de dato de una columna dice qué clase de valores contiene. Para elegir un gráfico bastan tres tipos: categoría, número y fecha.

Tipo Qué contiene En games_clean En pokemon
Categoría Texto con un conjunto limitado de valores. Puedes contarlos, no sumarlos. owners_tier, price_band, publisher type_1
Número Una cantidad medida. Puedes sumarla y hacer su media. price, metascore, owners_min attack, weight
Fecha Un punto en el tiempo. Tiene un orden y una distancia entre valores. release_date ninguna

Dos columnas pueden ser ambas categorías y comportarse de forma muy distinta. owners_tier tiene 3 valores. publisher tiene 13,951. Ten presente ese número: es la trampa de esta lección.

Ojo: un año no es solo un número

release_year se guarda como entero, así que es tentador decir "año frente a juegos: dos números, un diagrama de dispersión". Pero un año es un punto en el tiempo: el trabajo es la evolución y la herramienta es una línea. Un diagrama de dispersión necesita dos números medidos para cada cosa, como el precio y el Metascore de un juego.

La tabla de decisión

Junta las dos lecturas y obtienes la tabla de abajo. Tenla a mano: es la chuleta para el resto de la unidad.

Trabajo La pregunta suena así Columnas que toca Gráfico (nombre en Superset)
Comparación "¿Cuál tiene más?" 1 categoría + 1 número Bar Chart
Evolución "¿Cómo ha cambiado con el tiempo?" 1 fecha + 1 número Line Chart
Distribución "¿Cómo se reparten los valores?" 1 número Histogram
Relación "Cuando uno sube, ¿sube el otro?" 2 números Scatter Plot
Composición "¿Qué parte del todo es cada elemento?" 1 categoría, 5 partes o menos Pie Chart
Composición, muchas partes Lo mismo, con 6 partes o más 1 categoría, muchos valores Bar Chart, ordenado
Comparación, de dos maneras "¿Qué combinación tiene más?" 2 categorías + 1 número Heatmap
Ningún trabajo para un gráfico "¿Cuántos hay en total?" "¿Cuál es exactamente el valor de...?" 1 número, o valores exactos Big Number, Table

La misma tabla como un camino que puedes seguir con el dedo:

flowchart TB
    Q["<b>La pregunta</b><br>(el bloque que tienes delante)"] --> ONE{"¿La respuesta es un número,<br>o una lista de valores exactos?"}
    ONE -- "sí" --> BIG["<b>Big Number o Table</b><br>no hace falta gráfico"]
    ONE -- "no" --> JOB{"¿Cuál es el trabajo?"}
    JOB -- "¿quién tiene más?" --> CMP{"¿Cuántas columnas<br>de categoría?"}
    CMP -- "una" --> BAR["<b>Bar Chart</b>"]
    CMP -- "dos" --> HEAT["<b>Heatmap</b>"]
    JOB -- "¿cómo ha cambiado<br>con el tiempo?" --> LINE["<b>Line Chart</b>"]
    JOB -- "¿cómo se reparten<br>los valores?" --> HIST["<b>Histogram</b>"]
    JOB -- "¿dos números<br>se mueven juntos?" --> SCAT["<b>Scatter Plot</b>"]
    JOB -- "¿qué parte es<br>cada elemento?" --> PARTS{"¿Cuántas partes?"}
    PARTS -- "5 o menos" --> PIE["<b>Pie Chart</b>"]
    PARTS -- "6 o más" --> SBAR["<b>Bar Chart</b>, ordenado"]

Superset también ordena sus gráficos por trabajo

Abre Charts → + Chart y mira la lista Category a la izquierda de la galería de gráficos: Evolution, Distribution, Correlation, Part of a Whole, KPI... La correspondencia con nuestra tabla no es perfecta. Superset clasifica el Bar Chart y el Scatter Plot en Evolution, y el Heatmap en Correlation. Fíate de la pregunta, no del cajón en el que casualmente está la herramienta.

Trampa 1: un todo cortado en demasiadas partes

"¿Cómo se reparte el catálogo entre las distribuidoras?" El trabajo es la composición, así que tu mano va al gráfico de sectores. Para y cuenta primero las partes:

SELECT COUNT(DISTINCT publisher) FROM games_clean;

La respuesta es 13951. Intenta cortar un círculo en 13,951 porciones. El trabajo es el correcto; el material no encaja con la herramienta.

Compara dos composiciones. La primera tiene tres partes y es un gráfico de sectores perfectamente bueno:

pie showData
    title Juegos de Steam por nivel de propietarios
    "Niche" : 17921
    "Mid" : 8141
    "Hit" : 623

La segunda es cómo se reparten los 949 Pokémon de la tabla de clase por tipo primario. Dieciocho partes. Como gráfico de sectores serían dieciocho porciones finas y una leyenda que se lee con regla. Como gráfico de barras ordenado ves la respuesta de golpe: agua y normal van en cabeza, volador está casi vacío.

%%{init: {"themeVariables": {"xyChart": {"plotColorPalette": "#4051b5"}}}}%%
xychart-beta horizontal
    title "Pokémon por tipo primario (18 partes: barras ordenadas, no sectores)"
    x-axis [water, normal, grass, bug, rock, psychic, electric, fire, ghost, dragon, dark, ground, poison, fighting, steel, ice, fairy, flying]
    y-axis "Número de Pokémon" 0 --> 130
    bar [126, 111, 84, 79, 65, 64, 61, 59, 40, 39, 37, 36, 35, 31, 30, 29, 19, 4]

La regla: con cinco partes o menos, un gráfico de sectores. Con seis o más, compara las partes más grandes con un gráfico de barras ordenado. Para las distribuidoras, eso es exactamente el gráfico de barras del top 10 que construiste en Gráficos de barras y de líneas: mismas columnas, herramienta honesta.

Ojo: un gráfico de sectores no es 'el gráfico de los porcentajes'

Un gráfico de sectores sirve para las partes de un todo, y solo unas pocas. El porcentaje de juegos gratuitos en cada año son quince porcentajes separados que no suman 100: son quince números a lo largo del tiempo, así que una línea. Los porcentajes por sí solos nunca significan "gráfico de sectores".

Trampa 2: una pregunta que no necesita gráfico

"¿Cuántos juegos hay en la tabla?"

SELECT COUNT(*) FROM games_clean;

26685. Un número. No hay nada que ordenar, nada que seguir en el tiempo, nada que repartir. No todos los bloques necesitan un pico de diamante.

El lector necesita Muestra
Un número ("cuántos", "cuánto en total") Un Big Number: el valor, grande, con una etiqueta
Valores exactos que consultar ("¿cuál es exactamente el precio de...?") Una Table
Un patrón, una clasificación, una tendencia, una forma Un gráfico

Un gráfico sirve para ver un patrón. Si no hay ningún patrón que ver, un gráfico solo hace más lento al lector.

Práctica: ocho preguntas, ocho decisiones

Antes de abrir Superset, prueba estas en papel. Para cada una escribe tres cosas: el trabajo, las columnas y su tipo, el gráfico. Dos de las ocho son trampas.

# Pregunta sobre games_clean
1 ¿Cómo ha cambiado el número de juegos lanzados por año entre 2004 y 2018?
2 ¿Qué diez distribuidoras han lanzado más juegos?
3 ¿Cómo se reparten los precios de los juegos de pago (hasta 60 dólares)?
4 ¿Los juegos con mejor Metascore alcanzan más propietarios?
5 ¿Qué parte del catálogo es Niche, Mid y Hit?
6 ¿Qué combinación de franja de precio y nivel de propietarios reúne más juegos?
7 ¿Cómo se reparte el catálogo entre las distribuidoras?
8 ¿Cuántos juegos hay en la tabla?
Comprueba tus respuestas
# Trabajo Columnas Gráfico Qué muestra
1 Evolución release_date (fecha) + un recuento Line Chart 53 juegos en 2004, 556 en 2013, 1,352 en 2014, 8,845 en 2018
2 Comparación publisher (categoría) + un recuento Bar Chart Big Fish Games 284, SEGA 141, Strategy First 129, Ubisoft 123, Square Enix 95
3 Distribución price (número) Histogram 23,508 juegos de pago; 11,613 de ellos cuestan menos de 5 dólares. Una cola larga hacia la derecha
4 Relación metascore + owners_min (2 números) Scatter Plot Puntos que suben hacia la derecha
5 Composición owners_tier (categoría, 3 partes) Pie Chart Niche 67.2%, Mid 30.5%, Hit 2.3%
6 Comparación, de dos maneras price_band + owners_tier (2 categorías) + un recuento Heatmap 15 celdas; la mayor es Under 5 × Niche con 8,884 juegos
7 Composición, muchas partes publisher (categoría, 13,951 partes) Bar Chart, ordenado Sin gráfico de sectores. Es el gráfico de la pregunta 2
8 Ningún trabajo para un gráfico un recuento Big Number 26,685

Pruébalo: construye dos de ellos

Las preguntas 1 y 2 ya las dominas de Gráficos de barras y de líneas. Las preguntas 6 y 4 son bloques nuevos: conoces las herramientas, y ahora sabes por qué elegirlas. Necesitas el dataset games_clean en Superset (los archivos están en la página de Recursos).

Pregunta 6: franja de precio por nivel de propietarios. Dos categorías y un número: un mapa de calor.

Paso Haz esto Deberías ver
1 Charts → + Chart. Dataset games_clean, tipo de gráfico Heatmap, Create new chart. La vista Explore con un gráfico vacío.
2 X-axis: price_band. Y-Axis: owners_tier. Metric: COUNT(*). Tres controles rellenos.
3 Sort X Axis y Sort Y Axis: Axis ascending. Create chart. Una cuadrícula de 5 × 3 = 15 celdas.
4 Pestaña Customize → marca Show Values; Value Format: ,d. Un número en cada celda. Sin el formato se leen 8.88k.
5 Save → nombre del gráfico UT3 · Price band by owners tier. La celda más oscura es Under 5 × Niche con 8,884.

Pregunta 4: Metascore frente a propietarios. Dos números: un diagrama de dispersión.

Paso Haz esto Deberías ver
1 Nuevo gráfico sobre games_clean, tipo de gráfico Scatter Plot. La vista Explore.
2 X-axis: metascore. Metrics: pestaña Simple → columna owners_min, agregado AVG. Una métrica, AVG(owners_min).
3 Filters → metascore → operador Is not null → Save. Create chart. 73 puntos que suben hacia la derecha.
4 Pasa el cursor por el punto más alto. Metascore 96, unos 7.3 millones de propietarios de media.
5 Save → nombre del gráfico UT3 · Metascore vs average owners. El gráfico en tu lista de Charts.
¿Por qué 73 puntos y no 2,849?

Solo 2,849 de los 26,685 juegos tienen Metascore, y el Scatter Plot de Superset no dibuja un punto por juego: dibuja un punto por valor de la columna del eje X y necesita una métrica para la altura. Así que obtienes un punto por cada uno de los 73 valores distintos de Metascore, colocado en la media de propietarios de los juegos con esa puntuación. Los puntos del extremo derecho promedian muy pocos juegos (solo tres juegos tienen un 96), así que saltan de un lado a otro. Juego a juego el vínculo es débil: la correlación entre Metascore y propietarios es de solo 0.14.

Si algo parece estar mal
  • El mapa de calor muestra una celda o una fila: uno de X-axis / Y-Axis está vacío. Los dos necesitan una columna de categoría.
  • Las columnas del mapa de calor están en un orden extraño: Sort X Axis está vacío, así que las celdas salen en el orden que devuelva la base de datos. Pon Axis ascending.
  • Las franjas de precio salen como 15 to 30, 30 or more, 5 to 15, Free...: es correcto por ahora. Axis ascending ordena el texto alfabéticamente. Les darás a las franjas su orden natural en la próxima lección.
  • El diagrama de dispersión muestra un solo punto: metascore se fue a Dimensions en lugar de a X-axis.
  • La insignia sobre el diagrama de dispersión dice 74 rows: falta el filtro Is not null. El grupo 74 son los 23,836 juegos sin Metascore, que no tienen sitio en el eje X.

Ideas clave

  • La pregunta elige el gráfico, no tu gusto. Léela dos veces: el tipo de pregunta (el trabajo) y el tipo de dato de las columnas (el material).
  • Cinco trabajos: comparación (barras), evolución (líneas), distribución (histograma), relación (dispersión), composición (sectores).
  • Bastan tres tipos de columna: categoría, número, fecha. Un año es un punto en el tiempo, no un número medido.
  • Dos categorías y un número es un mapa de calor: una comparación hecha de dos maneras a la vez.
  • Una composición con seis partes o más no es un gráfico de sectores: usa un gráfico de barras ordenado.
  • Si la respuesta es un número o una lista de valores exactos, muestra un Big Number o una Table. No toda pregunta necesita un gráfico.

Comprobación rápida

1. '¿Cómo ha cambiado el precio medio de los juegos nuevos desde 2004?' ¿Qué trabajo es este y qué gráfico lo hace?
  • Evolución: un gráfico de líneas
  • Comparación: un gráfico de barras
  • Distribución: un histograma
  • Relación: un diagrama de dispersión

"Ha cambiado desde" significa tiempo: una fecha y un número. Eso es evolución, y su herramienta es el gráfico de líneas. Un histograma mostraría cómo se reparten los precios, sin tiempo de por medio.

2. Antes de elegir un gráfico, ¿qué dos cosas lees en la pregunta?
  • El tipo de pregunta, y las columnas que toca con su tipo de dato
  • El tamaño de la tabla, y los colores del cuadro de mando
  • El gráfico que hiciste la última vez, y el que queda mejor
  • El nombre del dataset, y cuántos filtros tiene

El trabajo (comparación, evolución, distribución, relación, composición) y el material (categoría, número, fecha). Juntos señalan una fila de la tabla de decisión.

3. Una pregunta toca dos columnas de categoría y un número: '¿Qué combinación de franja de precio y nivel de propietarios reúne más juegos?' ¿Qué gráfico?
  • Gráfico de sectores
  • Diagrama de dispersión
  • Mapa de calor
  • Histograma

Dos categorías forman una cuadrícula y el número rellena cada celda: eso es el mapa de calor, la fila de "comparación, de dos maneras". Un diagrama de dispersión necesita dos números, no dos categorías.

4. '¿Cómo se reparte el catálogo entre las distribuidoras?' Hay 13,951 distribuidoras. ¿Qué dibujas?
  • Un gráfico de sectores, porque el trabajo es la composición
  • Un gráfico de barras ordenado con las distribuidoras más grandes
  • Un gráfico de líneas con un punto por distribuidora
  • Un diagrama de dispersión de distribuidoras frente a juegos

El trabajo es la composición, pero un gráfico de sectores solo funciona con cinco partes o menos. Con muchas partes comparas las más grandes con un gráfico de barras ordenado. Una línea entre distribuidoras sugeriría una tendencia de una empresa a la siguiente, lo cual no significa nada.

5. ¿Por qué 'juegos lanzados por año' no es un diagrama de dispersión, aunque release_year se guarde como número?
  • Porque los diagramas de dispersión no pueden mostrar más de diez puntos
  • Porque Superset no tiene diagrama de dispersión
  • Porque un año es un punto en el tiempo: el trabajo es la evolución, y una dispersión necesita dos números medidos
  • Porque los años siempre deben mostrarse en un gráfico de sectores

El tipo de dato que importa es lo que la columna significa, no cómo se guarda. Un año ordena los datos en el tiempo, así que la pregunta trata de evolución. Un diagrama de dispersión sirve para la relación entre dos cantidades medidas, como el precio y el Metascore.

6. '¿Cuántos juegos hay en la tabla?' ¿Cuál es la forma correcta de mostrar la respuesta?
  • Un gráfico de barras con una barra
  • Un gráfico de sectores con una porción
  • Un histograma
  • Un Big Number: 26,685

Un único número no tiene ningún patrón que ver. Muéstralo grande, con una etiqueta. Un gráfico con una sola barra añade tinta y no añade información.

7. Un servicio de streaming pregunta: '¿En qué meses del año se ven más horas, y ha cambiado eso de un año a otro?' Elige las dos afirmaciones verdaderas.
  • La pregunta toca dos categorías (mes y año) y un número (horas)
  • Un mapa de calor con los meses en un eje y los años en el otro la responde
  • Un gráfico de sectores con una porción por mes y año la responde
  • No necesita gráfico: basta un Big Number

Mes y año se usan aquí como dos categorías que se cruzan, con las horas como número: la fila de "comparación, de dos maneras", un mapa de calor. Un gráfico de sectores tendría decenas de porciones, y un número grande no puede mostrar un patrón entre meses y años. Si solo preguntaran cómo cambiaron las horas a lo largo del tiempo, sería evolución: una línea.

Ya puedes elegir la herramienta adecuada para cualquier bloque. Pero el gráfico correcto aún puede ser ilegible: sin títulos, un eje en 2k y 4k, una leyenda que dice COUNT(*). Lo siguiente: Configurar gráficos en Superset, donde el gráfico aprende a explicarse solo.