# Geo map with markers > The items have locations and their state is best read spatially. - Canonical: https://patterns.konigi.com/dashboards/geo-map - Group: Visual representation - Level: implementation - Status: published - Updated: September 10, 2026 - Also called: map panel, choropleth, geospatial view --- ## Problem Latency is up in some regions and fine in others. A table sorted by region gives the answer eventually. A map gives it immediately, because the pattern is usually geographic—a submarine cable, a weather event, a data centre. ## Solution Put the values on a map. Markers at points, colour on regions, or density where the volume is high enough that individual points stop resolving. The three encodings answer different questions and are not interchangeable. **Markers** suit discrete located things: stores, sensors, data centres, incidents. Size or colour carries the measure. They fail by overlapping, so at density they need clustering, and clustering introduces its own reading problem because a cluster of five and a cluster of five hundred must look different. **Choropleth** fills administrative regions with colour, and carries a well-known distortion: the eye reads area, so a large sparsely-populated region dominates a small dense one carrying ten times the volume. Normalising by population or by area is not optional, and a choropleth of raw counts is close to always a map of where people live. **Density or heat** suits high-volume point data where individual points are meaningless. It is honest about aggregation but hides outliers, and its radius parameter changes the apparent story more than most people realise. Grafana's geomap exposes these as layer types over a configurable base map, which is the right model: the base map is context and should recede, while the data layer carries the meaning. Base maps that are dark, detailed and full of labels compete directly with the data drawn on them. The projection question is real but usually settled: web maps use Web Mercator, which inflates area with latitude, so on a choropleth of raw values Greenland and Russia look enormously important. Worth knowing when the map covers high latitudes. ## Use when Location genuinely explains the variation, and the audience thinks geographically. Delivery, retail, field equipment, edge infrastructure, anything with a physical footprint. ## Don't use when Location is a label rather than a cause. Plotting per-country revenue on a map when the interesting comparison is between two countries makes an easy comparison hard, and a bar chart would have ranked them in one glance. ## Trade-offs Maps are the most persuasive chart type in this collection and frequently the least informative, which makes them a favourite of stakeholder decks. They spend enormous space on geography that carries no data—oceans, empty land—and that space comes from the panels that would have shown the trend. Base map tiles are usually an external dependency, so the panel has a network failure mode nothing else on the page has. And precise location can be personally identifying, so a map of user events is a privacy decision as much as a design one. ## Checklist - Which encoding is this, and does it match the question? - If choropleth, is the value normalised by population or area rather than raw? - Does region area distort importance, especially at high latitudes? - At full density, do markers overlap, and does clustering distinguish sizes? - Does the base map recede, or does it compete with the data? - Where do the map tiles come from, and what shows if they fail? - Does the colour ramp work for colourblind viewers and in the page's theme? - Can the viewer get from a marker or region to the underlying records? - Is the default viewport right for the audience, or centred on someone else's country? - Could precise points identify individuals, and should they be aggregated? ## Compare **Grafana's geomap** builds the panel as stackable layers—markers, heatmap, GeoJSON—over a swappable base map, which makes it flexible and makes the base map a decision most dashboard authors never consciously take. **Datadog** ties maps to tag scope so a region view narrows the rest of the page, which is the pattern working as navigation rather than as illustration. **Kibana** carries the strongest geospatial tooling of the observability tools, with real spatial queries rather than only display, reflecting Elasticsearch's geo-query heritage. **Mapping-first tools** like Mapbox and Felt are worth naming because they treat the base map as a design surface rather than a backdrop, which is the discipline general dashboard tools skip. ## Related Host map is the same spatial scanning idea with an invented rather than geographic layout. Heatmap shares the density encoding without the geography. Sequential and diverging scales governs the choropleth ramp and is where most map errors actually live. Drill-down is what a marker click owes. Data table is the unglamorous alternative that often answers faster. ## Examples ### Grafana (Grafana Labs) The reference implementation for panel grids, template variables, and stat panels; most other tools are defined by how they differ from it. **Examples / Geomap** — captured September 10, 2026, Grafana Play (signed out; no version string exposed). analytical, medium density, dark theme, desktop-web. Four maps of the same flight data, and the base map does more damage than any of the data settings. On the three dark panels the markers are small green dots on dark grey, which at this size is close to the contrast floor; on the satellite panel they are small green dots on terrain that is already green, brown and blue, and they effectively disappear. The base layer is supposed to be context and recede, and imagery is the loudest option available. The density layer along the bottom is the honest one: it stops pretending individual points resolve, and the clusters on both coasts read immediately. Its radius is doing a great deal of unlabelled work, though, and the blobs merge into clouds at a setting nobody can see. Three of the four panels also carry a legend that says "Layer 1", which is a legend occupying a corner and naming nothing. Hotspots in this capture: - [Geo map with markers](https://patterns.konigi.com/dashboards/geo-map) *(this pattern)* — Markers as small dots. Green on dark grey at four pixels is near the contrast floor. - [Geo map with markers](https://patterns.konigi.com/dashboards/geo-map) *(this pattern)* — Satellite imagery under the same markers, competing with the data instead of receding. - [Sequential and diverging scales](https://patterns.konigi.com/dashboards/sequential-and-diverging-scales) — Density, with a ramp whose radius parameter changes the apparent story and isn't shown. - [Legend and series toggle](https://patterns.konigi.com/dashboards/legend-and-series-toggle) — A legend reading 'Layer 1'. It holds a corner of the panel and identifies nothing. ### Plausible Analytics (Plausible Insights) One column, top to bottom, where the metric row doubles as the chart's control. The clearest working argument that a dashboard can have exactly one interaction. **Live demo / plausible.io** — captured September 10, 2026, Plausible live demo, plausible.io's own stats (signed out). public, medium density, light theme, desktop-web. My single-column-narrative entry names Plausible as the reference implementation and says the trick is that the metric row doubles as the chart's control. Here it is doing exactly that: six tiles across the top, the first one boxed because it's selected, and the chart underneath plotting that metric and no other. Click a different tile and the chart follows. The page therefore has one interaction, and it is the same gesture as paying attention. Everything below reads as a single column in argument order—headline, then the shape behind it, then what it decomposes into, then goals. Two things it doesn't do. The ranked lists carry a count and a bar and no share of total, so Direct at 271k against Google at 25.1k tells you the ordering and not whether the top row is most of the traffic. And the choropleth is so pale that outside the United States almost every country is the same near-white, which is the encoding spending a whole panel to say "mostly America". Hotspots in this capture: - [Single-column narrative](https://patterns.konigi.com/dashboards/single-column-narrative) — One column, top to bottom, no panel arrangement and nothing to configure before reading starts. - [Header KPI strip](https://patterns.konigi.com/dashboards/header-kpi-strip) — Six tiles sharing one anatomy, each with a delta. The boxed one is selected, and the chart below plots it. - [Ratio and rate](https://patterns.konigi.com/dashboards/ratio-and-rate) — Bounce rate 43%, with the denominator two tiles away and the window only in the header. - [Overview then detail](https://patterns.konigi.com/dashboards/overview-then-detail) — The decomposition: sources, pages, geography, browsers, goals. Same subject, narrowed, no navigation. - [Ranked list](https://patterns.konigi.com/dashboards/ranked-list) — Sorted with an in-row bar, no share of total and no other row. Direct 271k versus Google 25.1k, out of what? - [Geo map with markers](https://patterns.konigi.com/dashboards/geo-map) *(this pattern)* — A choropleth pale enough that every country but one reads as the same white. Raw counts, unnormalised. - [Tabs as genres](https://patterns.konigi.com/dashboards/tabs-as-genres) — Tabs inside the panel—channels, sources, campaigns—so one card answers three questions in one slot. ### Tableau Public (Salesforce) Thousands of dashboards made by people who are not designers, published without a review step. The best available sample of what the pattern language looks like in the wild. **Shopify Customer Journey** — captured September 10, 2026, Tableau Public embed view; workbook published by Lovelytics. analytical, medium density, light theme, desktop-web. Tableau Public is the product; the design decisions here are the author's. This workbook was published by Lovelytics, so read it as what a competent analyst builds in Tableau rather than as how Tableau thinks dashboards should look. What is instructive is that it carries three separate lines of small-caps instruction—"click on metric to filter dashboard", "hover on a province to view breakdown by top 10 cities", "click on bar to view the second product purchased". Every interaction on the page needed a label, because none of them announces itself. That is the honest cost of cross-filtering: it is powerful and it is invisible until someone tells you it is there. Two other things. The tile block is nine values in a three-by-three grid, which is past the point where a strip has a reading order—the eye has to be told where to start and isn't. And the chart titled "Total sales per month" is plotting seven days, on a y-axis that begins at 500K, so a roughly twenty-five percent spread draws as a mountain range. Hotspots in this capture: - [Cross-filter](https://patterns.konigi.com/dashboards/cross-filter) — The tiles are the filter. It needed a line of instruction above it, because nothing about a number says it is clickable. - [Header KPI strip](https://patterns.konigi.com/dashboards/header-kpi-strip) — Nine values in a grid rather than four to six in a row, so there is no privileged place for the eye to start. - [Time series](https://patterns.konigi.com/dashboards/time-series) — Titled per month, plotting seven days, on an axis starting at 500K. A 25% spread rendered as a cliff. - [Hover detail](https://patterns.konigi.com/dashboards/hover-detail) — The breakdown by city exists only on hover, so it is unavailable on touch and invisible in this screenshot. - [Geo map with markers](https://patterns.konigi.com/dashboards/geo-map) *(this pattern)* — A choropleth of raw sales, unnormalised, so California and Texas lead partly by being large and populous. - [Ranked list](https://patterns.konigi.com/dashboards/ranked-list) — 490 against 30 for second place, so every bar below the first is a sliver and the ordering is all you get. ## Related patterns - [Host map](https://patterns.konigi.com/dashboards/host-map) — Hundreds of hosts; the viewer needs to spot the hot ones without a table of hundreds of rows. - [Heatmap](https://patterns.konigi.com/dashboards/heatmap) — Thousands of events per second can't be drawn as points; the viewer needs density. - [Sequential and diverging scales](https://patterns.konigi.com/dashboards/sequential-and-diverging-scales) — Magnitude and direction need encoding in color, and the wrong ramp lies. - [Drill-down](https://patterns.konigi.com/dashboards/drill-down) — The overview shows that something is wrong; the viewer needs to get to what, in one click. - [Data table](https://patterns.konigi.com/dashboards/data-table) — The viewer needs exact values for many items and wants to sort and scan them. ## Sources - [Grafana, Geomap panel](https://grafana.com/docs/grafana/latest/visualizations/panels-visualizations/visualizations/geomap/) - [ColorBrewer](https://colorbrewer2.org/) - [Bach et al., Dashboard Design Patterns](https://dashboarddesignpatterns.github.io/patterns.html) --- Screenshots on patterns.konigi.com are reproduced for commentary and criticism. Product names and marks belong to their owners.