Scatter Plume: 18 how-to guides (quadrants, animation, density…)
Step by step: sort products into four families, animate the cloud over time, zoom in, put a flag inside each bubble, read thousands of points as density.
Lire en françaisThese recipes start from a Scatter Plume chart that is already set up. If that's not the case, begin with getting started: the examples reuse its data. Features marked ★ are premium: they work without a license, with a watermark.
How do I sort my products into four families ★?
Your management wants to know which products are drivers, niches or products to review.
- Start from the step-by-step chart (Details =
Product, X axis =Orders, Y axis =Margin rate). - Quadrants ★ card: turn on Show ★. The cloud is split at the average of orders (631) and the average margin rate (43.2%).
- Quadrant names group: Top right = "Drivers", Top left = "Profitable niches", Bottom right = "Low-margin volume", Bottom left = "To review".
- Keep Tint the top-right quadrant on.
Result: the candle, the throw, the vase and the cushion are drivers; the lamp is a profitable niche; the bedding set is low-margin volume; the sofa, the table, the armchair and the shelf are to review.
Tip: Vertical split = Median of X resists better to an outlier product that pulls the average.
How do I split the cloud at a business threshold chosen by the reader ★?
The average moves with filters. Your controller wants a fixed margin threshold that readers can adjust.
- Modeling › New parameter › Numeric range: name it
Margin threshold, from 0.30 to 0.60, increment 0.01, default 0.45. Power BI creates the table and a slicer. - Create the measure:
// Value chosen in the slicer; 0.45 when nothing is chosen
Chosen threshold = SELECTEDVALUE ( 'Margin threshold'[Margin threshold], 0.45 )
- Quadrants ★ card: Horizontal split = Fixed value.
- Drag
Chosen thresholdinto Dynamic format, then right-click the field › Rename for this visual:quadrants.yValue.
Result: the horizontal line follows the slicer. At 0.45, the lamp (45%) sits on the line and the cushion (46%) is just above.
Warning: the fixed value is in the unit of the measure: 0.45 for 45%, not 45.
How do I label only the useful points?
Ten labels clutter; none leaves readers guessing. Choose which ones to show.
- Data labels card: turn on Show.
- Labeled points = Selected.
- Content = Name and Y value.
- Click a point, then Ctrl + click other ones.
Result: only the clicked points show their name and margin rate. For a permanent display, go back to Largest (N) and set N.
How do I tell categories apart without relying on color?
Your report is printed in black and white, or read by color-blind people.
- Legend (series) =
Category. - Points card: Shape = One shape per series.
- Keep Outline on: each shape stands out from its neighbors.
Result: Furniture, Decor and Textiles each have their shape (circle, square, diamond…), repeated in the legend. In Windows high contrast mode, one shape per series is enforced.
How do I check whether two measures move together ★?
You want to know if the most ordered products are also the most profitable, and whether it holds in each category.
- Analytics pane, Trend ★ card: turn on Show.
- Keep Show R² on.
- Turn on One trend per series for one line per category.
Result: a rising line means "more orders, more margin". R² tells how closely points follow the line: close to 1, the relationship is strong; close to 0, there is none.
How do I color points by a third measure ★?
Without a legend, you want color to show revenue, on top of size.
- Remove the field from Legend (series) if there is one.
- Data colors card: Coloring = Gradient by a value ★.
- Gradient value = Size.
- To change the palette: Style card, turn on Customize colors, then Gradient palette (e.g. Viridis ★).
Result: bubbles go from light to dark according to their revenue.
How do I draw a target on each axis ★?
You aim for at least 500 orders and a 40% margin, and want to see who is in the target.
- Analytics pane, Reference lines ★ card, Line 2 group: turn on Show, Axis = X axis (vertical), Value = Constant, Constant value = 500, Label = "Volume target".
- Line 3 group: turn on Show, Axis = Y axis (horizontal), Value = Constant, Constant value = 0.4, Label = "Margin target".
- Reference band group: turn on Show, Axis = Y axis, From = 0.4, To = 0.6, Label = "Target zone".
Result: two dashed lines and a light band show the products that meet both targets.
How do I filter the report on a group of points?
You want to see the sales detail of every product "to review".
- Check that Interactions › Select by drawing a rectangle is on (default).
- Drag the mouse diagonally around the points of the bottom-left quadrant.
- To add more, hold Ctrl and draw a second rectangle.
- To clear everything, click the chart background.
Result: the other visuals of the page are filtered on the selected products.
How do I animate the cloud over time?
You want to show how each product moved, month after month.
- Add a
Monthcolumn to your table (a date on the first of the month) and one row per product and month. - Drag
Monthinto Play axis (the column itself, not the Date Hierarchy). To read "Apr 2025" on the play bar, give the column themmm yyyyformat (Column tools › Format). - Below the chart, click ▶. Bubbles glide from one month to the next; the current month is written large in the background.
- Click a bubble: it stays selected for every month and leaves a trail behind it. Play again to follow its path.
- Playback card: Duration of a frame (ms) = 600 to speed up, Loop for a lobby screen.
Result: a "Gapminder-style" chart that tells the story without a table of figures.
How do I zoom into a crowded corner of the cloud?
A few points squash the scale and the rest of the cloud is packed.
- Hold Shift and draw a rectangle around the area you care about.
- For fine control: Zoom card, turn on the X and Y sliders, then drag the window or its handles.
- Double-click the chart (or the ⟲ button) to go back to the full view.
Result: the points of the area spread out and become readable; the other visuals of the page are not filtered.
How do I label only some points?
You want to name the flagship products, and only them, regardless of their size.
- Create the measure:
// Product name when revenue exceeds 50,000, blank otherwise
Flagship label =
IF ( [Revenue] > 50000, SELECTEDVALUE ( Products[Product] ) )
- Drag it into Label (text).
Result: only the products above 50,000 carry their name, even when the Data labels card is off. The text can be anything: "New", "To watch"…
How do I make one point stand out ★?
You present your store against the network and want readers to find it at once.
- Highlight ★ card: Highlighted points ★ = "Lyon store" (one name per line for several).
- Keep Other points in gray and Label highlighted points on.
Result: your store keeps its color and its name; the others turn light gray. To let readers choose, use a measure in the Highlight ★ field instead (for example IF ( SELECTEDVALUE ( Stores[Store] ) = SELECTEDVALUE ( 'Choice'[Store] ), 1 )).
How do I compare the same cloud by channel ★?
You want to see whether the volume / margin relationship is the same in store and on the web.
- Drag
Channelinto Small multiples ★. - Analytics pane, Trend ★: turn on Show and Show the equation.
Result: one small cloud per channel, with the same axes, each with its line and equation.
How do I find customer families without defining them first ★?
You have 500 customers (purchase frequency, average basket) and look for profiles.
- Analytics pane, Automatic clusters ★: turn on Show. Keep Number of clusters at 0.
- Confidence ellipses ★: turn on Show to circle each cluster.
- Click a cluster in the legend to filter the report on its customers.
Result: customers are split into a few colored clusters ("Cluster 1 (120)"…), circled and numbered. Rename them with Cluster name ("Profile").
How do I compare planned and actual ★?
Each project has a budget (X) and an actual cost (Y): those above the diagonal overrun.
- Put
Budgetin X axis andActual costin Y axis,Projectin Details. - Analytics pane, Symmetry and ratio ★, Symmetry shading group: turn on Show, Text where Y > X = "Overrun", Text where Y < X = "Under budget".
- For two equal areas, set X axis › Minimum and Y axis › Minimum to 0 and the same Maximum on both axes.
Result: overrunning projects are in the "Overrun" tinted area; the diagonal marks the balance.
How do I read a cloud of several thousand points ★?
With 7,000 orders, points overlap and you can no longer see where they concentrate.
- Density ★ card: turn on Show ★, Points = Density instead of the points (clickable cells). For a smooth heat map under the points, choose Shape = Continuous (smooth gradient) instead; for curves that do not hide the points, Contour lines.
- Marginal distributions ★ card: turn on Show.
- If amounts are widely spread, switch X axis › Scale and Y axis › Scale to Logarithmic.
Result: dark cells (or the red core of the heat map) show where most orders are; the marginal histograms give the distribution of each measure. Clicking a hexagon selects its orders.
How do I put a flag or a logo inside each point ★?
You compare countries (or brands) and want readers to recognize them without reading the labels.
- Prepare a column that holds each image as base64. In Power Query, for a file:
Binary.ToText ( File.Contents ( "C:\Images\fr.png" ), BinaryEncoding.Base64 ). A web address does not work: the visual never loads it. - Create the measure:
// Embedded image of the point's country (SVG here; data:image/png;base64, for a PNG)
Flag = "data:image/svg+xml;base64," & SELECTEDVALUE ( Countries[Flag base64] )
- Drag
Flaginto Image ★. - Points card, Images ★ group: Minimum size of a point with an image (px) = 30 so that small countries stay readable; turn off Border in the series color for a bare image.
Result: each bubble shows its flag, circled in the color of its continent; the bubble stays clickable like a normal point. Page "5 · Countries and flags ★" of the sample report shows this setup.
Beyond 5,000 points, images are not drawn (the points are then drawn in one block).
How do I see where a point spent its time ★?
With the play axis, a line trail zigzags when a product changes a lot from one month to the next. You would rather see the area where it stays most often.
- Keep
Monthin Play axis and click one or more points (Ctrl + click). - Playback card: Trail style = Density ★, or Lines and density ★ to keep the path.
- Without a play axis, the same idea exists for the selection: Interactions card, Density around the selection = Points of the same series ★ (the whole series of the clicked point) or Selected points ★.
Result: a patch of color under the points shows the most frequent positions, across all dates; with several points from different series, each series has its own patch, in its color. Clicking the background clears the selection and the density.
How do I draw margin-rate lines (y = a·x) ★?
With revenue on X and gross margin on Y, each line that starts at the origin is a margin rate: products above the "50%" line have a margin rate above 50%.
- X axis =
Revenue; Y axis =Gross margin; Details =Product. - Analytics pane, Slope lines y = a·x ★ card, Line 1 group: turn on Show, Slope a (y = a·x + b) =
0.3, Label =30%. - Line 2 group: turn on Show, Slope a (y = a·x + b) =
0.5, Label =50%. - Optional, a computed slope: create the measure
Average rate = CALCULATE ( [Margin rate], REMOVEFILTERS ( Products ) ), drag it into Dynamic format and rename itslopes.a3; turn on Line 3.
Result: two (or three) dashed lines start at the origin; at a glance, you see which products have a margin above the target rate. The lines stay correct on a logarithmic axis.
How do I drill down from a category to its products?
One point per product is sometimes too many: start with the categories, then drill down.
- Drag
Category, thenProduct, into Details (one point each). - The cloud shows one point per category. Turn on drill mode (the ↓ arrow in the visual header), then click a category: its products appear.
- To see everything at once, choose Expand all down one level (⇊): one point per product, named "Category · Product".
Result: the same drill-down as in the native scatter chart, with Scatter Plume's quadrants, trend and styles.
How do I keep the same axes when filtering?
When a slicer filters the report, the axes refit to the remaining points: two selections can no longer be compared. Pin the maximums with measures that ignore filters.
- Create the measures:
X axis max =
CALCULATE (
MAXX ( VALUES ( Products[Product] ), [Revenue] ), -- the rightmost point…
REMOVEFILTERS ( Products ) -- …computed without any filter
)
Y axis max =
CALCULATE ( MAXX ( VALUES ( Products[Product] ), [Gross margin] ), REMOVEFILTERS ( Products ) )
- Drag both measures into Dynamic format, then rename them for this visual
xAxis.maxandyAxis.max. - Filter with a slicer: the axes no longer move, only the points change.
Don't use ALLSELECTED (): it follows slicers and cross-filters, so the scale would still move. To ignore just one filter, remove only the filtered column, for example REMOVEFILTERS ( Products[Category] ).
Learn more
- Getting started with Scatter Plume: the data to prepare and a first visual, step by step.
- 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.