# Cross-filter > Selecting something in one panel should narrow every other panel to it. - Canonical: https://patterns.konigi.com/dashboards/cross-filter - Group: Interaction - Level: flow - Status: published - Updated: September 10, 2026 - Also called: brushing and linking, click to filter, coordinated views --- ## Problem There is a bump in one chart. The viewer wants to know what everything else was doing during that bump, for those particular requests, and the alternative is retyping a filter into six panels and hoping they agree. ## Solution Make a selection in one view act as a filter on all the others. Drag a region, click a bar, pick a slice, and the rest of the page redraws to describe only what was selected. This is brushing and linking, one of the oldest ideas in information visualisation, and it maps onto two of Shneiderman's seven tasks at once: filter, and relate. Its power is that it asks no questions. The viewer does not need to know the name of the dimension that explains the bump—they only need to be able to point at the bump. Honeycomb's BubbleUp is the most aggressive version of the idea. Draw a box around an anomalous region of a heatmap and it computes the distribution of every dimension inside the box against the baseline outside it, then ranks dimensions by how different they are. A selection works as a hypothesis as much as a filter. The viewer supplies the "this looks wrong" and the tool supplies the "because these requests all came from one build". Two design decisions decide whether an ordinary implementation is any good. First, is the selection visible after it is made—a page that has silently filtered itself is a page that will be screenshotted and misread. Second, can it be undone in one action, because exploratory filtering is only exploratory if reversing it is free. ## Use when The panels on a page describe the same underlying population from different angles, and the viewer's question is "what else is true of these". ## Don't use when The panels are independent. Cross-filtering unrelated queries produces panels that quietly show nothing, or worse, show something that looks like an answer. Also avoid where filtering is expensive enough that each selection costs seconds, because the pattern lives on immediacy. ## Trade-offs Coordinated views multiply query load, so one drag can fire a dozen queries. State becomes invisible: the difference between "no data" and "filtered to nothing" is the whole page, and viewers who did not make the selection cannot tell. Sharing gets harder, because a screenshot of a cross-filtered dashboard omits the thing that makes it true. And the selection model has to be consistent across panel types, which is where most implementations fracture—drag means brush on a chart and text-select on a table. ## Checklist - Is the active selection visible, in words, somewhere persistent? - Can it be cleared in one action, and is that action obvious? - Does every panel honour the selection, and do the ones that can't say so? - How many queries does a single selection fire, and how long until the page settles? - Is a filtered-to-empty panel distinguishable from a broken one? - Does the selection go into the URL so it can be shared? - Is the interaction the same gesture across chart, table and map? - Can selections combine, and is the combination shown as AND? - Does a stale selection survive a time-range change, and should it? - What does a screenshot of this state fail to communicate? ## Compare **Honeycomb** turns the selection into analysis rather than only filtering: BubbleUp compares everything inside the drawn region against the baseline outside it and ranks the dimensions that differ, which answers "why" rather than only "what else". **Tableau** made the pattern mainstream in BI, where selecting a mark filters every other sheet on the dashboard by default, and the default is exactly why analysts expect it everywhere else. **Grafana** has no general cross-filtering between panels; the equivalent runs through template variables that panels read from, which is explicit, shareable through the URL, and requires someone to wire it. **Datadog** scopes a whole page by tags so a selection changes the page's context rather than each panel's query, which keeps panels consistent at the cost of finer-grained selections. ## Related Filter bar is the same narrowing expressed as controls rather than gestures. Drill-down is the navigate-away alternative. Heatmap is the surface this pattern most often selects on. Zoom and pan is cross-filtering restricted to the time axis. Template variable is how Grafana approximates it, and the reason the selection ends up in the URL. ## Examples ### Netdata Per-second charts, hundreds per node, with a per-chart anomaly ribbon instead of a band on the series. **Anomalies / Anomaly advisor** — captured September 11, 2026, Netdata Agent, Anomaly advisor (public registry node, signed out). operational, medium density, dark theme, desktop-web. Netdata answers the anomaly problem without drawing a band at all, and the difference is worth recording. Rather than shading an expected range around each series, it scores every metric continuously and plots the result as its own series: the percentage of dimensions currently anomalous, and beneath it the count. Both sit near zero for most of the window and spike to about 0.04% at five separate moments. The trade is clear once you see it. A band tells you whether this metric is behaving, on the same axes as the metric, and needs one per chart. A rate tells you whether anything at all is behaving, in one chart, and cannot tell you which thing without a second step—which is what the panel at the bottom is for, and why it currently reads "You haven't highlighted any timeframe yet." The finding requires a brush selection before it will name a single metric. Hotspots in this capture: - [Anomaly band](https://patterns.konigi.com/dashboards/anomaly-band) — Not a band. An anomaly rate as its own series, so one chart covers every metric instead of one band per chart. - [Explain this metric](https://patterns.konigi.com/dashboards/explain-this-metric) — Every section carries a sentence saying what it counts, directly under its heading rather than behind an icon. - [Cross-filter](https://patterns.konigi.com/dashboards/cross-filter) *(this pattern)* — Highlight a timeframe and the page names which metrics drove it. The selection is the query. - [Empty state](https://patterns.konigi.com/dashboards/empty-state) — "You haven't highlighted any timeframe yet"—the reason for the blank, and the action that fills it. - [Share and embed](https://patterns.konigi.com/dashboards/share-and-embed) — Generate report, top right. Whether the highlighted window travels with it is the question the button raises. ### 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) *(this pattern)* — 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) — 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 - [Filter bar](https://patterns.konigi.com/dashboards/filter-bar) — The viewer needs to narrow a large set by several attributes and see what's applied. - [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. - [Heatmap](https://patterns.konigi.com/dashboards/heatmap) — Thousands of events per second can't be drawn as points; the viewer needs density. - [Zoom and pan on time](https://patterns.konigi.com/dashboards/zoom-and-pan) — The interesting thing is ten minutes wide on a seven-day chart. - [Template variable](https://patterns.konigi.com/dashboards/template-variable) — One dashboard layout is right for fifty services, forty hosts, or three environments, and nobody should build it fifty times. ## Sources - [Shneiderman, The Eyes Have It—A Task by Data Type Taxonomy](https://www.cs.umd.edu/~ben/papers/Shneiderman1996eyes.pdf) - [InfoVis Wiki, Linking and Brushing (archived; the host went down)](https://web.archive.org/web/20240624063817/https://infovis-wiki.net/wiki/Linking_and_Brushing) - [Honeycomb, BubbleUp](https://www.honeycomb.io/platform/bubbleup) --- Screenshots on patterns.konigi.com are reproduced for commentary and criticism. Product names and marks belong to their owners.