Gráfico cuantitativo · Heatmap (matrix)
Mapa de calor
El mapa de calor de una matriz codifica valores en las intersecciones de filas y columnas mediante una escala de color. Sirve para encontrar concentraciones y patrones en una tabla. No es necesariamente un mapa geográfico ni permite leer pequeñas diferencias con precisión solo por color.
También: heatmap, matriz de intensidad, dia y hora, cohortes, calendario de calor, calendar heatmap.
- Qué permite ver
- Encontrar patrones · Comparar categorías
- Clave de lectura
- Patrones en una matriz con una escala común.
El ejemplo en vivo
Consultas por día y franja horaria
Consultas · intensidad lineal entre 0 y 12
- Escala común lineal: 0 a 12 consultas; cada celda muestra su valor.
PDF guarda la vista del gráfico; SVG conserva la imagen vectorial y TSV contiene los datos. Este ejemplo usa datos simulados o un esquema hipotético.
{"slug":"mapa_de_calor","title":"Consultas por día y franja horaria","unit":"Consultas · intensidad lineal entre 0 y 12","reading":"Miércoles a las 17 h concentra doce consultas. La intensidad y los números permiten comprobar el mismo valor.","headers":["Día","9 h","13 h","17 h"],"rows":[["Lun",2,5,8],["Mar",4,8,10],["Mié",6,10,12],["Jue",3,7,9],["Vie",2,4,6]],"geometry":"<rect class=\"vx-region\" x=\"100\" y=\"35\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"100\" y=\"35\" width=\"72\" height=\"65\" opacity=\"0.16666666666666666\"/><rect class=\"vx-region\" x=\"100\" y=\"113\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"100\" y=\"113\" width=\"72\" height=\"65\" opacity=\"0.4166666666666667\"/><rect class=\"vx-region\" x=\"100\" y=\"191\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"100\" y=\"191\" width=\"72\" height=\"65\" opacity=\"0.6666666666666666\"/><rect class=\"vx-region\" x=\"200\" y=\"35\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"200\" y=\"35\" width=\"72\" height=\"65\" opacity=\"0.3333333333333333\"/><rect class=\"vx-region\" x=\"200\" y=\"113\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"200\" y=\"113\" width=\"72\" height=\"65\" opacity=\"0.6666666666666666\"/><rect class=\"vx-region\" x=\"200\" y=\"191\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"200\" y=\"191\" width=\"72\" height=\"65\" opacity=\"0.8333333333333334\"/><rect class=\"vx-region\" x=\"300\" y=\"35\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"300\" y=\"35\" width=\"72\" height=\"65\" opacity=\"0.5\"/><rect class=\"vx-region\" x=\"300\" y=\"113\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"300\" y=\"113\" width=\"72\" height=\"65\" opacity=\"0.8333333333333334\"/><rect class=\"vx-region\" x=\"300\" y=\"191\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"300\" y=\"191\" width=\"72\" height=\"65\" opacity=\"1\"/><rect class=\"vx-region\" x=\"400\" y=\"35\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"400\" y=\"35\" width=\"72\" height=\"65\" opacity=\"0.25\"/><rect class=\"vx-region\" x=\"400\" y=\"113\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"400\" y=\"113\" width=\"72\" height=\"65\" opacity=\"0.5833333333333334\"/><rect class=\"vx-region\" x=\"400\" y=\"191\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"400\" y=\"191\" width=\"72\" height=\"65\" opacity=\"0.75\"/><rect class=\"vx-region\" x=\"500\" y=\"35\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"500\" y=\"35\" width=\"72\" height=\"65\" opacity=\"0.16666666666666666\"/><rect class=\"vx-region\" x=\"500\" y=\"113\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"500\" y=\"113\" width=\"72\" height=\"65\" opacity=\"0.3333333333333333\"/><rect class=\"vx-region\" x=\"500\" y=\"191\" width=\"72\" height=\"65\" rx=\"0\"/><rect class=\"vx-a\" x=\"500\" y=\"191\" width=\"72\" height=\"65\" opacity=\"0.5\"/>","labels":[{"x":135,"y":288,"text":"Lun","kind":""},{"x":136,"y":67,"text":"2","kind":"tile"},{"x":136,"y":145,"text":"5","kind":"tile"},{"x":136,"y":223,"text":"8","kind":"tile"},{"x":235,"y":288,"text":"Mar","kind":""},{"x":236,"y":67,"text":"4","kind":"tile"},{"x":236,"y":145,"text":"8","kind":"tile"},{"x":236,"y":223,"text":"10","kind":"tile"},{"x":335,"y":288,"text":"Mié","kind":""},{"x":336,"y":67,"text":"6","kind":"tile"},{"x":336,"y":145,"text":"10","kind":"tile"},{"x":336,"y":223,"text":"12","kind":"tile"},{"x":435,"y":288,"text":"Jue","kind":""},{"x":436,"y":67,"text":"3","kind":"tile"},{"x":436,"y":145,"text":"7","kind":"tile"},{"x":436,"y":223,"text":"9","kind":"tile"},{"x":535,"y":288,"text":"Vie","kind":""},{"x":536,"y":67,"text":"2","kind":"tile"},{"x":536,"y":145,"text":"4","kind":"tile"},{"x":536,"y":223,"text":"6","kind":"tile"},{"x":45,"y":67,"text":"9 h","kind":""},{"x":45,"y":145,"text":"13 h","kind":""},{"x":45,"y":223,"text":"17 h","kind":""}],"legend":[{"label":"Escala común lineal: 0 a 12 consultas; cada celda muestra su valor.","tone":0}],"note":"Añadir escala y valores; el color no alcanza para leer cifras.","kind":"Datos simulados"}Datos simulados para enseñar la lectura; no son resultados de Lisandro ni de un cliente.
Consultar los datos del ejemplo
| Día | 9 h | 13 h | 17 h |
|---|---|---|---|
| Lun | 2 | 5 | 8 |
| Mar | 4 | 8 | 10 |
| Mié | 6 | 10 | 12 |
| Jue | 3 | 7 | 9 |
| Vie | 2 | 4 | 6 |
Variante: mapa de calor en calendario
La posición conserva semanas y días; la intensidad representa el conteo diario. El mes hipotético tiene 28 días y comienza en lunes. Cada celda muestra día · publicaciones, con valores entre 0 y 4 y una escala común. La disposición permite buscar un patrón semanal, si existe, sin perder las fechas. Si falta un registro, debe marcarse como faltante: un día sin datos no se convierte en cero. Un mes inventado no demuestra estacionalidad; una comparación entre meses reales debe respetar fechas, duración y una misma escala.
Un mes de actividad editorial
Mes hipotético de 28 días que comienza en lunes · etiqueta: día · publicaciones
- Intensidad común de 0 a 4 publicaciones por día; cada celda conserva el conteo.
PDF guarda la vista del gráfico; SVG conserva la imagen vectorial y TSV contiene los datos. Este ejemplo usa datos simulados o un esquema hipotético.
{"slug":"calendario","title":"Un mes de actividad editorial","unit":"Mes hipotético de 28 días que comienza en lunes · etiqueta: día · publicaciones","reading":"La grilla conserva semanas y días. Los valores van de cero a cuatro publicaciones; es un mes inventado que comienza en lunes.","headers":["Día","Publicaciones"],"rows":[[1,3],[2,0],[3,2],[4,4],[5,1],[6,3],[7,0],[8,2],[9,4],[10,1],[11,3],[12,0],[13,2],[14,4],[15,1],[16,3],[17,0],[18,2],[19,4],[20,1],[21,3],[22,0],[23,2],[24,4],[25,1],[26,3],[27,0],[28,2]],"geometry":"<rect class=\"vx-region\" x=\"65\" y=\"43\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"65\" y=\"43\" width=\"50\" height=\"50\" opacity=\"0.75\" rx=\"4\"/><rect class=\"vx-region\" x=\"135\" y=\"43\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"135\" y=\"43\" width=\"50\" height=\"50\" opacity=\"0\" rx=\"4\"/><rect class=\"vx-region\" x=\"205\" y=\"43\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"205\" y=\"43\" width=\"50\" height=\"50\" opacity=\"0.5\" rx=\"4\"/><rect class=\"vx-region\" x=\"275\" y=\"43\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"275\" y=\"43\" width=\"50\" height=\"50\" opacity=\"1\" rx=\"4\"/><rect class=\"vx-region\" x=\"345\" y=\"43\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"345\" y=\"43\" width=\"50\" height=\"50\" opacity=\"0.25\" rx=\"4\"/><rect class=\"vx-region\" x=\"415\" y=\"43\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"415\" y=\"43\" width=\"50\" height=\"50\" opacity=\"0.75\" rx=\"4\"/><rect class=\"vx-region\" x=\"485\" y=\"43\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"485\" y=\"43\" width=\"50\" height=\"50\" opacity=\"0\" rx=\"4\"/><rect class=\"vx-region\" x=\"65\" y=\"105\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"65\" y=\"105\" width=\"50\" height=\"50\" opacity=\"0.5\" rx=\"4\"/><rect class=\"vx-region\" x=\"135\" y=\"105\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"135\" y=\"105\" width=\"50\" height=\"50\" opacity=\"1\" rx=\"4\"/><rect class=\"vx-region\" x=\"205\" y=\"105\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"205\" y=\"105\" width=\"50\" height=\"50\" opacity=\"0.25\" rx=\"4\"/><rect class=\"vx-region\" x=\"275\" y=\"105\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"275\" y=\"105\" width=\"50\" height=\"50\" opacity=\"0.75\" rx=\"4\"/><rect class=\"vx-region\" x=\"345\" y=\"105\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"345\" y=\"105\" width=\"50\" height=\"50\" opacity=\"0\" rx=\"4\"/><rect class=\"vx-region\" x=\"415\" y=\"105\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"415\" y=\"105\" width=\"50\" height=\"50\" opacity=\"0.5\" rx=\"4\"/><rect class=\"vx-region\" x=\"485\" y=\"105\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"485\" y=\"105\" width=\"50\" height=\"50\" opacity=\"1\" rx=\"4\"/><rect class=\"vx-region\" x=\"65\" y=\"167\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"65\" y=\"167\" width=\"50\" height=\"50\" opacity=\"0.25\" rx=\"4\"/><rect class=\"vx-region\" x=\"135\" y=\"167\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"135\" y=\"167\" width=\"50\" height=\"50\" opacity=\"0.75\" rx=\"4\"/><rect class=\"vx-region\" x=\"205\" y=\"167\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"205\" y=\"167\" width=\"50\" height=\"50\" opacity=\"0\" rx=\"4\"/><rect class=\"vx-region\" x=\"275\" y=\"167\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"275\" y=\"167\" width=\"50\" height=\"50\" opacity=\"0.5\" rx=\"4\"/><rect class=\"vx-region\" x=\"345\" y=\"167\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"345\" y=\"167\" width=\"50\" height=\"50\" opacity=\"1\" rx=\"4\"/><rect class=\"vx-region\" x=\"415\" y=\"167\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"415\" y=\"167\" width=\"50\" height=\"50\" opacity=\"0.25\" rx=\"4\"/><rect class=\"vx-region\" x=\"485\" y=\"167\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"485\" y=\"167\" width=\"50\" height=\"50\" opacity=\"0.75\" rx=\"4\"/><rect class=\"vx-region\" x=\"65\" y=\"229\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"65\" y=\"229\" width=\"50\" height=\"50\" opacity=\"0\" rx=\"4\"/><rect class=\"vx-region\" x=\"135\" y=\"229\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"135\" y=\"229\" width=\"50\" height=\"50\" opacity=\"0.5\" rx=\"4\"/><rect class=\"vx-region\" x=\"205\" y=\"229\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"205\" y=\"229\" width=\"50\" height=\"50\" opacity=\"1\" rx=\"4\"/><rect class=\"vx-region\" x=\"275\" y=\"229\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"275\" y=\"229\" width=\"50\" height=\"50\" opacity=\"0.25\" rx=\"4\"/><rect class=\"vx-region\" x=\"345\" y=\"229\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"345\" y=\"229\" width=\"50\" height=\"50\" opacity=\"0.75\" rx=\"4\"/><rect class=\"vx-region\" x=\"415\" y=\"229\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"415\" y=\"229\" width=\"50\" height=\"50\" opacity=\"0\" rx=\"4\"/><rect class=\"vx-region\" x=\"485\" y=\"229\" width=\"50\" height=\"50\" rx=\"4\"/><rect class=\"vx-a\" x=\"485\" y=\"229\" width=\"50\" height=\"50\" opacity=\"0.5\" rx=\"4\"/>","labels":[{"x":90,"y":20,"text":"L","kind":""},{"x":160,"y":20,"text":"M","kind":""},{"x":230,"y":20,"text":"X","kind":""},{"x":300,"y":20,"text":"J","kind":""},{"x":370,"y":20,"text":"V","kind":""},{"x":440,"y":20,"text":"S","kind":""},{"x":510,"y":20,"text":"D","kind":""},{"x":90,"y":68,"text":"1 · 3","kind":"tile"},{"x":160,"y":68,"text":"2 · 0","kind":"tile"},{"x":230,"y":68,"text":"3 · 2","kind":"tile"},{"x":300,"y":68,"text":"4 · 4","kind":"tile"},{"x":370,"y":68,"text":"5 · 1","kind":"tile"},{"x":440,"y":68,"text":"6 · 3","kind":"tile"},{"x":510,"y":68,"text":"7 · 0","kind":"tile"},{"x":90,"y":130,"text":"8 · 2","kind":"tile"},{"x":160,"y":130,"text":"9 · 4","kind":"tile"},{"x":230,"y":130,"text":"10 · 1","kind":"tile"},{"x":300,"y":130,"text":"11 · 3","kind":"tile"},{"x":370,"y":130,"text":"12 · 0","kind":"tile"},{"x":440,"y":130,"text":"13 · 2","kind":"tile"},{"x":510,"y":130,"text":"14 · 4","kind":"tile"},{"x":90,"y":192,"text":"15 · 1","kind":"tile"},{"x":160,"y":192,"text":"16 · 3","kind":"tile"},{"x":230,"y":192,"text":"17 · 0","kind":"tile"},{"x":300,"y":192,"text":"18 · 2","kind":"tile"},{"x":370,"y":192,"text":"19 · 4","kind":"tile"},{"x":440,"y":192,"text":"20 · 1","kind":"tile"},{"x":510,"y":192,"text":"21 · 3","kind":"tile"},{"x":90,"y":254,"text":"22 · 0","kind":"tile"},{"x":160,"y":254,"text":"23 · 2","kind":"tile"},{"x":230,"y":254,"text":"24 · 4","kind":"tile"},{"x":300,"y":254,"text":"25 · 1","kind":"tile"},{"x":370,"y":254,"text":"26 · 3","kind":"tile"},{"x":440,"y":254,"text":"27 · 0","kind":"tile"},{"x":510,"y":254,"text":"28 · 2","kind":"tile"}],"legend":[{"label":"Intensidad común de 0 a 4 publicaciones por día; cada celda conserva el conteo.","tone":0}],"note":"El mes es ficticio. Un cero es un registro explícito de cero publicaciones, no un día sin datos. La forma semanal no agrega días ni convierte estos datos en estacionalidad demostrada.","kind":"Datos simulados"}Datos simulados para enseñar la lectura; no son resultados de Lisandro ni de un cliente.
Consultar los datos del ejemplo
| Día | Publicaciones |
|---|---|
| 1 | 3 |
| 2 | 0 |
| 3 | 2 |
| 4 | 4 |
| 5 | 1 |
| 6 | 3 |
| 7 | 0 |
| 8 | 2 |
| 9 | 4 |
| 10 | 1 |
| 11 | 3 |
| 12 | 0 |
| 13 | 2 |
| 14 | 4 |
| 15 | 1 |
| 16 | 3 |
| 17 | 0 |
| 18 | 2 |
| 19 | 4 |
| 20 | 1 |
| 21 | 3 |
| 22 | 0 |
| 23 | 2 |
| 24 | 4 |
| 25 | 1 |
| 26 | 3 |
| 27 | 0 |
| 28 | 2 |
Qué preguntas ayuda a responder
- ¿En qué días y franjas se concentran las consultas?
- ¿Cómo varía la retención por cohorte y tiempo desde el alta?
Qué datos necesitás
Dos dimensiones que definen filas y columnas, y una medida por celda. El ejemplo muestra consultas en cinco días y tres franjas de una semana ficticia.
Escala y unidad comunes. Un cero observado se distingue de una celda sin medición. En cohortes, los períodos todavía no observados no deben rellenarse con cero.
Cómo leerlo
Primero revisá los ejes y la leyenda: aquí la intensidad va linealmente de 0 a 12 consultas. Los números de cada celda y la tabla permiten comprobar valores sin distinguir colores.
Miércoles a las 17 h muestra 12 consultas, frente a 6 el viernes a esa hora. Una semana inventada sirve para enseñar la lectura; no alcanza para afirmar un patrón semanal estable.
Cuándo elegirlo y cuándo buscar otra opción
Para explorar matrices con muchas celdas o revisar repetición temporal. Una escala secuencial sirve para cantidades ordenadas; una divergente tiene sentido cuando hay un punto central relevante, como cero desvío.
Para comparar unos pocos valores exactos, barras o una tabla suelen ser más directas. No agregues un mapa geográfico si las filas y columnas no representan posiciones reales.
Errores y malas interpretaciones
- Cambiar el dominio de color en cada fila y comparar tonos como si representaran la misma cantidad. Si normalizás por fila, explicá la transformación.
- Usar un arcoíris sin orden perceptible o confiar solo en rojo y verde. No ocultes el valor ni la leyenda.
- Presentar mayor volumen de consultas como mejor tasa de conversión sin conocer la exposición de cada franja.
Alternativas para comparar
- Gráfico de barras. Barras: facilitan comparar unas pocas magnitudes.
- Mapa coroplético. Coroplético: necesita áreas geográficas y una medida adecuada por área.
En dashboards, informes y presentaciones
En dashboards de atención, el mapa de calor puede orientar horarios que merecen una revisión. Para recomendar dotación, faltan duración, complejidad, capacidad y variación entre semanas. En storytelling, resaltá una celda conservando el resto de la matriz para que pueda juzgarse el contexto.
Fuentes y alcance de la revisión
Se consultaron las secciones pertinentes de estas fuentes para la definición, codificación o método indicado. Los ejemplos, cálculos aplicados y textos de esta ficha pertenecen al proyecto.