Power BI scatter chart: sort your items into four families
Get started with Scatter Plume: prepare your data, build a bubble chart, label the useful points, split the cloud into quadrants and animate it over time.
Lire en françaisIn short
What the visual does. Scatter Plume places each item (a product, a customer, a city) as a point on a two-dimensional map: the further right, the higher its first measure; the higher up, the higher its second one. A third measure can inflate each point into a bubble. You see at a glance which items are alike, which stand out and how the two measures are related.
When to use it:
- compare volume and profitability (orders and margin rate per product);
- sort items into four families with quadrants (drivers, niches, to review…);
- check whether two measures move together (trend and R²);
- find outliers;
- show how each item moves from one year or month to the next (play axis).
When to use something else:
- to compare one measure across categories, a bar chart reads better (Bar Plume);
- to follow one measure over time, use a line chart (Line Plume); Scatter Plume shows time differently: the play axis moves the points from one date to the next.
What you will be able to do:
- prepare a "one point per value" column and two or three measures;
- build a scatter chart, then a bubble chart colored by category;
- label the useful points without cluttering the chart;
- split the cloud into four named quadrants and add a trend;
- select a group of points to filter the report;
- animate the cloud over time with the play axis.
What you need:
- a recent Power BI Desktop;
- the Scatter Plume visual installed (see Getting started with Plume visuals, "Installing a Plume visual");
- a column that identifies each item (product, customer…) and two numeric measures.
The data to provide
The expected shape
Scatter Plume draws one point per value of the column placed in Details (one point each). For each point it computes two measures (DAX formulas that return a number, see the glossary): one gives the horizontal position (X axis), the other the vertical position (Y axis).
- What identifies a point (product, customer, store) is a text column.
- What places it (orders, margin rate, revenue) is a measure.
- Your table can have one row per order or one row per product: Power BI aggregates for each point.
- A rate (margin rate, conversion rate) must be a measure that divides two sums, never a sum of rates.
The sample dataset
A home goods retailer (fictitious data): one row per product, with its number of orders, its revenue and its margin.
| Product | Category | Orders | Amount | Margin |
|---|---|---|---|---|
| Linen sofa | Furniture | 412 | 366680 | 124671 |
| Cedar candle | Decor | 1105 | 24310 | 14829 |
| Oak table | Furniture | 236 | 283200 | 110448 |
| Wool throw | Textiles | 780 | 46800 | 24336 |
| Brass lamp | Decor | 318 | 47700 | 21465 |
| Bedding set | Textiles | 640 | 76800 | 32256 |
| Rattan armchair | Furniture | 154 | 61600 | 17248 |
| Stoneware vase | Decor | 905 | 31675 | 18372 |
| Velvet cushion | Textiles | 1240 | 37200 | 17112 |
| Wall shelf | Furniture | 520 | 46800 | 12636 |
To create it without a file: Modeling › New table, paste the formula below, then confirm.
Products =
DATATABLE (
"Product", STRING,
"Category", STRING,
"Orders", INTEGER,
"Amount", INTEGER,
"Margin", INTEGER,
{
{ "Linen sofa", "Furniture", 412, 366680, 124671 },
{ "Cedar candle", "Decor", 1105, 24310, 14829 },
{ "Oak table", "Furniture", 236, 283200, 110448 },
{ "Wool throw", "Textiles", 780, 46800, 24336 },
{ "Brass lamp", "Decor", 318, 47700, 21465 },
{ "Bedding set", "Textiles", 640, 76800, 32256 },
{ "Rattan armchair", "Furniture", 154, 61600, 17248 },
{ "Stoneware vase", "Decor", 905, 31675, 18372 },
{ "Velvet cushion", "Textiles", 1240, 37200, 17112 },
{ "Wall shelf", "Furniture", 520, 46800, 12636 }
}
)
The measures to create
Select the Products table, then Modeling › New measure. Create one measure at a time.
// Number of orders: adds up the Orders column
// of the rows visible for the point (here, a product)
Orders = SUM ( Products[Orders] )
// Revenue: adds up the Amount column
Revenue = SUM ( Products[Amount] )
// Gross margin in dollars
Gross margin = SUM ( Products[Margin] )
// Margin rate: the margin divided by revenue
// DIVIDE returns blank instead of an error when revenue is zero
Margin rate = DIVIDE ( [Gross margin], [Revenue] )
Give Margin rate the Percentage format: select the measure, then Measure tools › Format: Percentage. Axes, labels and tooltips use the format of each measure.
With a real sales table (one row per order), replace Orders with COUNTROWS ( Sales ): the number of rows of the table.
Preparation pitfalls
- A summed rate: dragging a rate column into Y axis creates an automatic sum of rates, which makes no sense. Create the
Margin ratemeasure. - A blank X or Y value: the point is not drawn.
- Zero or negative values on a Logarithmic axis: these points are left out.
- The same product drawn several times: it belongs to several values of the Legend (for example Legend = Channel: one point for the web, one for the store).
- A date in the play axis: drag the date column itself (right-click the field › choose the column name, not the Date Hierarchy), or a Month or Year column. A date hierarchy only keeps its first level.
Step by step: your first Scatter Plume in 10 minutes
Goal: a bubble chart of products, volume on X, margin rate on Y, revenue as size, one color per category, the largest products labeled.
-
On the report page, click the Scatter Plume icon in the Visualizations pane. A frame appears with the visual's landing page.
-
Drag the
Productcolumn into Details (one point each). Each product will become a point. -
Drag the
Ordersmeasure into X axis. -
Drag the
Margin ratemeasure into Y axis. Ten points appear: high volumes on the right, high margins at the top. -
Drag the
Categorycolumn into Legend (series). Points take one color per category (Furniture, Decor, Textiles) and a legend appears at the top. -
Drag the
Revenuemeasure into Size. Points become bubbles: their area follows revenue. The sofa and the table, with high revenue, are the largest. -
In the Format pane, Points card: Opacity (%) = 60. Overlapping bubbles stay visible.
-
Data labels card: turn on Show. The names of the N largest points appear (Labeled points = Largest (N), N = 10 by default).
-
In the same card, N = 5. Only the five largest points keep their name.
-
X axis card: turn on Axis title. Do the same in the Y axis card. Readers know what each axis measures.
Result: a bubble chart that shows at a glance that small decor and textile items often sell with a high margin, and that furniture brings revenue with a lower margin. Drag the mouse over a group of points: they are selected and filter the rest of the page.
Troubleshooting
| What you see | Likely cause | Solution |
|---|---|---|
| A single point | Details (one point each) is empty: one point per series | Drag the item column into Details (one point each) |
| Points are missing | Blank X or Y value, or zero or negative value on a Logarithmic axis | Check the measures; switch the axis back to Linear |
| The same product appears several times | It belongs to several values of the Legend | Choose a legend with one value per product, or remove it |
| The fixed quadrant value cuts nothing | The value is not in the unit of the measure | Type 0.45 for 45%, not 45 |
| The quadrant average looks wrong | It is computed on the displayed points, each counting once, and follows filters | Use Fixed value for a business threshold |
| The tinted quadrant is not the winners' one | The tint follows the on-screen position; an axis is inverted | Turn off Invert axis, or rename the quadrants |
| Points do not fade when clicking another visual | Scatter Plume is filtered by other visuals, it does not draw partial highlighting | Normal behavior: points outside the selection disappear |
| Margin rate shows as 0.43 | The measure does not have the Percentage format | Measure tools › Format: Percentage |
| The "Plume Visuals · Premium preview" watermark appears | A ★ feature is on without a key (quadrants, gradient, analytics, small multiples, highlight, density, marginals, ★ style…) | Remove the ★ feature or paste your key (see Getting started with Plume visuals) |
| The play axis shows only one frame or mixed-up years | A Date Hierarchy was dragged, or the column is badly sorted text | Drag the date column itself; sort the month column by a number (Sort by column) |
| Identical points hide each other | Several items have exactly the same X and Y | Points › Jitter overlapping points (px) = 4 to 8 px |
| Arrow keys no longer go through the points | More than 5,000 points: they are drawn in one block | Filter the page, or select with a rectangle |
| The play bar shows "04/01/2025" instead of the month | The date column has a short date format | Give it the mmm yyyy format (Column tools › Format): "Apr 2025" |
| The point shows no image and a message mentions base64 (edit mode) | The Image ★ measure returns a web address, which is never loaded | Convert the image to base64 (Power Query Binary.ToText) and return data:image/png;base64,… |
| "Loading data…" then a warning | More than 100,000 rows: only the first 100,000 are read | Filter the page or use a less detailed Details field |
Key takeaways
- Details gives one point per value, X axis and Y axis place it, Size makes it a bubble, Legend colors it.
- A rate is computed in a measure (
DIVIDE), never by summing a rate column. - Quadrants ★ sort points into four families, at the average, the median or a fixed threshold in the unit of the measure.
- Label only the useful points: Largest (N), Selected, or the Label (text) field.
- Draw a rectangle (or a lasso) to select a group of points and filter the report; Shift + drag to zoom.
- A date in Play axis animates the cloud; click a bubble to follow its trail. The column format decides how dates are written.
- The Image ★ field accepts only base64 images: never a web address.
Learn more
- Scatter Plume how-to guides: recipes for common needs.
- Scatter Plume fields and settings: every field well and every setting.
- Getting started with Plume visuals: installation, license, styles and shared settings.
- The visual's page: Scatter Plume. A question? Support.