Comparing Two Sides of Data with Butterfly Chart in Power BI
When I work with data in Power BI, I often need to compare two related values — things like male vs female, actual vs target, or planned vs actual. At first, I used separate charts for this, but I always felt it was harder to quickly see the difference.
That’s when I started using butterfly charts. They helped me compare two sides of data in one clean and easy-to-understand visual.
In this blog, I want to share:
What a butterfly chart is
And how I create one step by step in Power BI
What Is a Butterfly Chart?
A butterfly chart (also called a tornado chart) shows two values side by side, mirrored around a center line.
One value goes to the left, the other goes to the right, and both share the same category on the Y-axis. When you look at the chart, the shape looks like a butterfly — that’s where the name comes from.
Before I even knew the name, I had already seen this chart in many places, especially in:
Population reports (male vs female by age group)
Sales dashboards (actual vs target)
Cost and revenue comparisons
What I really like about butterfly charts is how simple they make comparisons.
Instead of switching between two visuals or trying to compare numbers in my head, everything is visible in one place. I can quickly see which side is higher and where the gaps are.
Over time, I’ve noticed that butterfly charts work really well in certain scenarios.
Healthcare Analytics
I’ve found them especially useful for:
Patient distribution by gender and age group
Comparing treatment results
Understanding population patterns
In this blog, I’ll show an example using Patient distribution by gender and age group.
Creating a Butterfly Chart in Power BI
Power BI doesn’t have a built-in butterfly chart, but once I learned the trick, I realized it’s actually very easy to create.
Step 1: Start with Clean Data
First, I make sure my data is ready. I need:
One category column (for example, Age Group)
Two values that I want to compare (Male count and Female count)
Step 2: Make One Measure Negative
This is the key step that creates the butterfly effect.
I make one of the measures negative so it moves to the left side of the chart.
Male =
CALCULATE(
COUNTROWS(HealthData) * -1,
HealthData[gender] = “male”
)
Female =
CALCULATE(
COUNTROWS(HealthData),
HealthData[gender] = “female”
)
This simple step pushes the Male values to the left and keeps the Female values on the right.
Step 3: Add the Chart
Next, I add a Clustered Bar Chart:
I place Age Group on the Y-axis
I add both Male and Female measures to the X-axis
At this point, the butterfly shape already starts to appear like:

Step 4: Format the Chart
I go to Format visual
Under Bars → Layout:
I turn Overlap = ON
I set Space between series = 100%

After that, I:
Turn on data labels, but now you will see negative values for Male count,
Enter "#,0;#,0" to show only positive numbers in the custom format for Male as in below screenshot:

Adjust colors, gridlines and borders based on the dashboard style
Here's how the butterfly chart appears now:

Final Thoughts
Butterfly charts might look fancy at first, but once you know the trick, they’re actually very simple to build.
I really like using them because they clearly show comparisons, differences, and patterns without overwhelming the viewer.
If you’re building Power BI dashboards and want an easy way to compare two sides of the same story, I’d definitely suggest giving butterfly charts a try.


