Forum Discussion
Improving Visualization of Multiple Data Points in a Scatter Chart
Hi All,
I used a scatter chart to create this, but the sizes of dots 3 & 4 / 5 & 6 look very similar and are difficult to distinguish visually. I tried adjusting the dot sizes using different DAX, but outcome was the same.
Is there a way to make the differences in dot size more pronounced, or to automatically apply different colors based on dot size (for example 1= lighter blue, 2 = ...., 100 = darkest), or any ideas to make the whole statement more clear?
Value : AngleDeg
X Axis : 0X =MAX ( MVPI[Radius] ) * COS ( RADIANS ( MAX ( MVPI[AngleDeg] ) ) )
Y-Axis : 0Y =MAX ( MVPI[Radius] ) * SIN ( RADIANS ( MAX ( MVPI[AngleDeg] ) ) )
Legend : Categories into 1,21,3,4 according to the individual marking
Size : 0Dot Size =
Thank you all!! I found the bubble chart under Viz can help on this and I decide to use that! Much appreciate all!!
10 Replies
- YYlee
Helper I
Thank you all!! I found the bubble chart under Viz can help on this and I decide to use that! Much appreciate all!!
- AshokKunwar
Continued Contributor
Hii YYlee
If these adjustments make your dots easier to distinguish, please mark this as the "Accepted Solution"!
- cengizhanarslan
Super User
You’re hitting two Power BI scatter limits:
Bubble size is scaled non-linearly and then capped (so close values often look the same).
Your current formula EXP([pax]/Max * 2) actually compresses most points unless the ratio is near 1.
1) Use a stronger (and controllable) size scaling
A good pattern is normalize → power curve → scale to a range:
Dot Size = VAR v = [0PaxCount] VAR vMin = CALCULATE( MIN([0PaxCount]), ALLSELECTED(MVPI) ) VAR vMax = CALCULATE( MAX([0PaxCount]), ALLSELECTED(MVPI) ) VAR n = DIVIDE( v - vMin, vMax - vMin ) -- 0..1 VAR curved = POWER( n, 0.35 ) -- <1 expands differences RETURN 1 + 99 * curved -- force range 1..1002) Color by size (discrete “bands”) using conditional formatting
Power BI scatter can’t do a continuous gradient color by a measure directly like some visuals, but you can do it with binning:
Create a band measure/column:
Size Band = VAR n = DIVIDE( [0PaxCount], CALCULATE( MAX([0PaxCount]), ALLSELECTED(MVPI) ) ) RETURN SWITCH( TRUE(), n < 0.2, "1", n < 0.4, "2", n < 0.6, "3", n < 0.8, "4", "5" )Then put Size Band on Legend and assign colors (light → dark).
3) If outliers exist: cap the max so mid values separate better
Outliers make all other bubbles look similar.
If you can add a helper measure, cap vMax using a percentile (approximation approach):
Create a “Max excluding top x%” value in Power Query is best, but if you must stay DAX-only, easiest is: use a fixed cap (business-defined), or use a measure like Median/Avg based cap.
Example with a business cap:
VAR vMax = MIN( CALCULATE( MAX([0PaxCount]), ALLSELECTED(MVPI) ), 5000 -- cap )- YYlee
Helper I
Dear Ceng,
Thank you for your help! If I remove the radius from the legend, my four ranks will become one, which I do not want.
- Ritaf1983
Super User
Hi YYlee
In Power BI’s native scatter chart there is no discrete control over bubble size per category. Bubble size is always treated as a continuous, normalized scale, with internal min/max limits applied by the visual itself. As a result, even when using nonlinear DAX transformations (EXP, LOG, POWER, etc.), small-to-medium differences tend to be visually compressed and remain hard to distinguish.
This is therefore not a DAX limitation but a visualization constraint of the scatter chart.
More importantly, from a data visualization perspective, scatter charts with varying bubble sizes are generally not suitable for comparing magnitudes. Human perception is poor at comparing areas, especially circular areas, and even more so when values are close (e.g. 3 vs. 4 or 5 vs. 6). This makes precise or even relative comparison unreliable, regardless of how the size is calculated.
If the goal is to compare similarity or differences between categories, a table combined with bar visuals (e.g. data bars, column or bar charts) will usually be far more effective and interpretable.
If the goal is instead to analyze spatial patterns, clustering, or directional behavior, a scatter chart can still be appropriate, but bubble size should be used very cautiously (or reduced to a very coarse scale), and color or faceting may communicate the message more clearly.
Clarifying the analytical goal—what the viewer is expected to understand or decide based on the chart—would make it easier to recommend a more effective visual approach.
If this post helps, then please consider Accepting it as the solution to help the other members find it more quickly
- YYlee
Helper I
Dear Rita,
Thank you for your explanation! I understand what you mean, but the team want to try this new trend and I would like to give it a go! Thank you again!
- AshokKunwar
Continued Contributor
Hii YYlee
Instead of exponential growth, we will usePower Scaling to create a steeper visual gap and Conditional Formatting to add a second layer of identification.
Step 1: Update the Size Measure
Replace your EXP logic with a POWER function. Cubing the value (x^3) creates a much more dramatic size difference than EXP for normalized values.
0Dot Size Adjusted = VAR MaxPax = CALCULATE ( MAX ( [0PaxCount] ), ALLSELECTED ( MVPI ) ) VAR NormalizedValue = DIVIDE ( [0PaxCount], MaxPax ) RETURN // Raising to the power of 3 creates a high-contrast visual gap POWER(NormalizedValue, 3) * 100Step 2: Apply a Color Gradient (Heatmap Effect)
Since eyes detect color changes faster than slight size changes, apply a gradient based on the count.
- Go to the Format pane of your Scatter Chart.
- Navigate to Markers > Color.
- Click the fx button (Conditional Formatting).
- Set Format style to Gradient.
- Base it on the field [0PaxCount].
- Set the Minimum to a light color (e.g., Light Blue) and Maximum to a dark color (e.g., Dark Navy).
Step 3: Enable Transparency
To help with overlapping dots (3 & 4 / 5 & 6), set the Marker Transparency to 25%.
- Why? When two dots overlap, the intersection will appear darker, immediately signaling that multiple data points are clustered there.
Why this works:
- Mathematical Contrast: Power scaling forces the larger values to be significantly larger than the median values, making them easier to tell apart.
- Dual-Encoding: By using both Size and Color to represent the same value, you complement the visual data, making the report more accessible for everyone.
Summary for the Community
If your scatter chart bubbles look too similar, try moving to a POWER function and always use a Color Gradient to make the "clusters" stand out.
If these adjustments make your dots easier to distinguish, please mark this as the "Accepted Solution"!
- YYlee
Helper I
Dear Ashok,
Thank you for your help!!
1. I tried the size measurement before, but unfortunately it doesn't work. If one dot is multiplied by 100, the rest are multiplied by 100 too, so the outcome is the same.
2. My marker colour does not appear [fx]. I am not sure why.
- AshokKunwar
Continued Contributor
Hey 👋 YYlee
Here is how you can resolve these specific issues to get your markers to stand out.
1. Why the [fx] Button is Missing
In Power BI, when you have a field in the Legend bucket of a scatter chart, the conditional formatting [fx] button disappears. This is because the Legend is already "reserving" the color property to differentiate categories.
The Fix:
- Move the field from the Legend bucket into the Details bucket.
- Once the Legend bucket is empty, go to Format pane > Markers > Color.
- The [fx] button will now be visible, allowing you to apply your blue-to-dark-blue gradient based on [0PaxCount].
2. Fixing the "Multiplied by 100" Scaling Issue
You noted that multiplying by 100 made all dots larger without changing the relative difference. This happens because Power BI automatically scales bubbles based on the available space. If your DAX returns values like 10, 20, and 100, Power BI might still render them similarly if the Bubble Size range is too narrow.
The Fix:
Instead of just multiplying by 100, you need to use a nonlinear power function to force a larger mathematical gap between small and large values, then adjust the visual slider.
Updated DAX:
0Dot Size Contrast = VAR MaxPax = CALCULATE ( MAX ( [0PaxCount] ), ALLSELECTED ( MVPI ) ) VAR NormalizedValue = DIVIDE ( [0PaxCount], MaxPax ) RETURN // Cubing the normalized value (x^3) creates // much higher contrast than linear or EXP scaling. POWER(NormalizedValue, 3)Visual Adjustment:
After applying the measure, go to Format pane > Markers > Shape and look for the Size slider. Move the slider to increase the maximum bubble size. Because you used POWER(x, 3), a dot at 50% of the max value will now appear 8 times smaller than the max dot, rather than just half the size.
3. Making Overlaps Clearer
To address dots 3 & 4 or 5 & 6 appearing identical, set the Transparency to 25-30% under the Marker settings.
Why? If two dots are nearly the same size and color, transparency creates a "darkening" effect where they overlap, making it immediately obvious that multiple data points are occupying that space.
If these adjustments make your dots easier to distinguish, please mark this as the "Accepted Solution"!