cancel
Showing results for
Did you mean:
Frequent Visitor

## Sort bar chart by category

Hi everyone !

I have a bar chart like this :

I'd like to have all the pink together, then all the blue, etc on the same bar chart, while keeping the current order within a given color group.

If you need more context, these are average GPAs of different schools, color coded by states. And here is my model :

Thank you !

1 ACCEPTED SOLUTION
Super User

You can sort a chart using a measure that is not on the chart by adding the measure to the tooltip.

Then setting the sort on the chart to use the measure:

Now the sort measure.  First it calcualtes an alphabetical ranking of the states and multiplies that by 100 then adds the ranking of the school based on [Average GPA].  The * 100 + school ranking returns something like:
All Arizona schools are ranked 1__ then the shool ranking is added on so we get 101, 102, 103 for Arizona schools, 201, 202, 203 for California schools, etc.

``````Sort Measure =
DIVIDE ( [AVG GPA], [AVG GPA] ) *
(
RANKX(ALL(FactTable),CALCULATE(MAX(FactTable[State])),,ASC,Dense) * 100 +
RANKX(ALL(School),[AVG GPA],,DESC,Dense)
)``````

The
DIVIDE ( [AVG GPA], [AVG GPA] ) *

Keeps the ranking from calculating where there is no GPA.
I have attached my sample file for you to look at.

2 REPLIES 2
Super User

You can sort a chart using a measure that is not on the chart by adding the measure to the tooltip.

Then setting the sort on the chart to use the measure:

Now the sort measure.  First it calcualtes an alphabetical ranking of the states and multiplies that by 100 then adds the ranking of the school based on [Average GPA].  The * 100 + school ranking returns something like:
All Arizona schools are ranked 1__ then the shool ranking is added on so we get 101, 102, 103 for Arizona schools, 201, 202, 203 for California schools, etc.

``````Sort Measure =
DIVIDE ( [AVG GPA], [AVG GPA] ) *
(
RANKX(ALL(FactTable),CALCULATE(MAX(FactTable[State])),,ASC,Dense) * 100 +
RANKX(ALL(School),[AVG GPA],,DESC,Dense)
)``````

The
DIVIDE ( [AVG GPA], [AVG GPA] ) *

Keeps the ranking from calculating where there is no GPA.
I have attached my sample file for you to look at.

Frequent Visitor

That's absolutely perfect, thank you so much !

My Average GPA was actually not a measure but a field in the FactTable (forgot to show it in my simplified model) but using

``MAX(FactTable[Average GPA])``

instead of just [Average GPA] solved that issue 🙂