Back to Blog

High-Density Scatter Charts in Power BI - Plotting Thousands of Points Without Lying to Yourself

August 12, 20268 min readMichael Ridland

Scatter charts are where a lot of Power BI reports quietly stop telling the truth. Not because anyone did anything wrong, but because a scatter plot is one of the few visuals in the tool that cannot show you everything you asked it to, and it handles that by making decisions on your behalf that most people never see.

Here is the situation. You have a dataset with fifty thousand rows. Each row is a sensor reading, or a customer, or a transaction, and you drop it onto a scatter chart to look at the shape of the relationship between two measures. Power BI renders it, it looks fine, and you move on. What you probably did not clock is that Power BI did not plot fifty thousand points. It plotted a sample. And whether that sample tells the same story as the full dataset is a question worth asking before you present the thing to a room of people making decisions off it.

I want to walk through how high-density scatter sampling actually works, because I have sat in enough client meetings where someone pointed at a cluster on a scatter chart and drew a conclusion that the underlying data did not support. Microsoft's documentation on high-density scatter charts covers the mechanics. I want to cover what it means for whether you can trust what you are looking at.

Why a scatter chart cannot just plot everything

A line chart or a bar chart aggregates. Ten thousand rows become twelve monthly bars, and the visual is honest because the aggregation is the point. A scatter chart is different. Every row is potentially its own dot, and there is a hard limit to how many individual dots a visual can render and still be responsive. Historically that limit was around 3,500 points. High-density sampling exists to push past that while keeping the chart usable.

The old behaviour was blunt: Power BI took the first 3,500 rows in some order and drew those, ignoring the rest. If your data happened to be sorted, you got a chart of one corner of your dataset and no warning. That is the kind of thing that quietly ruins an analysis.

High-density sampling is smarter. Instead of grabbing the first N rows, it divides the plot area into a grid and works to preserve the visual shape of the data. It keeps outliers, it keeps the points that define the edges and the density of each region, and it thins out the areas where a hundred dots are all sitting on top of each other and telling you nothing extra. The goal is that the sampled chart looks like the full chart would have looked, even though it is drawing far fewer points. For exploring the overall shape of a relationship, this is genuinely good. It is a real improvement over the blunt truncation it replaced.

Where it works well, and where I get nervous

For the job scatter charts are actually good at, spotting correlation, seeing clusters, finding outliers, high-density sampling does its job. If there is a clump of points in the top right and a long tail heading down to the left, the sampled chart will show you that clump and that tail. The algorithm is specifically built to preserve outliers, which is the thing you most want a scatter chart to reveal, so the points that matter most tend to survive.

Where I get twitchy is when someone starts treating a scatter chart as a way to read individual records. "There is a dot at 47,000 dollars and 30 days, who is that customer?" On a sampled chart, that specific dot may or may not be present, and the absence of a dot in a region does not reliably mean there is no data there. Scatter charts are for shape, not for lookup. The moment someone is trying to identify or count specific points off a high-density scatter, they have picked the wrong visual and the sampling will eventually burn them.

The honest limitation: sampling preserves the appearance of density, not the exact count. If you need to know how many points fall in a region, do not eyeball the scatter. Build a measure. I have watched people estimate "about a third of our accounts are in this zone" by looking at dot density on a sampled chart, and they were wrong by a wide margin because dense regions get thinned specifically so the chart stays legible. The chart was doing exactly what it was designed to do. The person reading it just asked it a question it was never built to answer.

The details that actually change your results

A few things about how the sampling behaves are worth having in your head, because they change what you see.

Sampling is per series. If you split your scatter by a category using the Legend field, each series gets sampled somewhat independently. That is usually what you want, because it stops one large category from crowding out a small but interesting one. But it also means the visual balance between series on screen is not a reliable read on their relative volumes. A small series and a huge series can end up looking closer in point-count than they really are.

The X and Y measures drive the whole thing. High-density sampling engages when you put measures on both axes and the row count is high enough to need it. What defines a "row" is your Details or Values grain, so if your scatter looks weirdly sparse or weirdly dense, the first thing to check is what field is defining each point. I have debugged more than one "the sampling is broken" complaint that turned out to be a grain problem, someone had the wrong field in Details and every point was actually an aggregate.

Turning sampling off is possible but rarely the right move. You can reduce a scatter to a smaller, unsampled set by filtering the data down, and for a lot of reports that is the better answer anyway. A scatter of forty thousand raw points is usually a sign that you are asking one chart to do too much. Filtering to a meaningful subset, this region, this product line, this quarter, gives you a chart that is both honest and readable. The instinct to cram everything onto one plot is where most scatter chart problems start.

How we handle this on client work

When we build reporting for clients through our Power BI consulting engagements, scatter charts get a specific bit of care that other visuals do not, precisely because the sampling is invisible. A bar chart that is wrong looks wrong. A scatter chart that is misleading looks completely fine, which makes it more dangerous.

The rule we work to is simple. A scatter chart is allowed to answer questions about shape and relationship, and it is not allowed to be the source of a number. If a stakeholder needs to know "how many" or "which one", that answer comes from a card, a table, or a measure sitting next to the scatter, never from reading the dots. We will happily use a scatter to show that two things are related and then put a proper calculated figure underneath it so nobody is tempted to count pixels.

The other thing we do is interrogate the grain before anyone gets attached to the picture. Half the time a client's scatter chart is either far denser or far sparser than it should be because the field defining each point is not what they think it is. Sorting that out usually changes the chart more than any amount of fiddling with sampling settings would. This kind of unglamorous data modelling is a big part of what our Microsoft Fabric consultants end up doing when a reporting problem turns out to be a data problem wearing a visual's clothing.

The uncomfortable truth about big scatter plots

There is a temptation to see high-density sampling as permission to throw enormous datasets at a single scatter chart and trust Power BI to sort it out. It mostly will, for the narrow purpose of showing you the overall shape. But a scatter chart of a hundred thousand points is almost always a question that has not been sharpened enough. What are you actually trying to see? If it is correlation, you can see that in a well-chosen sample. If it is a specific segment, filter to it. If it is counts, use a different visual entirely.

The best scatter charts I have built with clients plot a few thousand meaningful points, not everything the model contains. High-density sampling is there as a safety net for when the data volume gets away from you, and it is a good safety net. It is a poor design strategy. Lean on it to keep an exploratory chart responsive, not as a reason to skip the thinking about what the chart is for.

The short version

High-density sampling makes Power BI scatter charts responsive and preserves the visual shape of your data, including the outliers, which is genuinely useful. It does not preserve exact counts, it samples each series independently, and it will quietly mislead anyone who tries to read individual records or estimate volumes off dot density. Use a scatter for relationships and shape. Get your numbers from a measure. And when a scatter chart is carrying a hundred thousand points, treat that as a sign the question needs narrowing, not as a triumph of the sampling engine.

If you have Power BI reports where the charts look right but the decisions coming off them keep going sideways, that gap between "looks fine" and "is trustworthy" is exactly the kind of thing we sort out. Take a look at our services or get in touch and tell us what your dashboards are being used to decide.