Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
6 years ago
Solved

Conditional colour format on data card

Hi there

 

I have two data cards - one with an average pass ratio, and the other with the pass ratio which changes when you select different slicers. So you can compare the pass ratio alongside the average, to see if you've done better or worse. Lovely.

I want the colour of the pass ratio to be green if it's higher than the average, and red if it's lower. 


I'm not sure how to do this. Help!

  • Hi Anonymous, this is a multistep process.

    1. Compute a measure that returns your color selections. I used this:

     

     

    Vs Average = 
    VAR varCurrentValue = SELECTEDVALUE('Table'[Value],0)
    VAR varAverage = [Average Value]
    RETURN
        SWITCH(
            TRUE(),
            varCurrentValue > varAverage, "Green",
            varCurrentValue = varAverage, "Black",
            varCurrentValue < varAverage, "Red"
        )

     

     

      1. So if the current selected value (I used a slicer to select a value) is greater than the Average Value measure, return Green, if equal, black, if below, red. The average value measure is:

     

     

    Average Value = 
    CALCULATE(
        AVERAGE('Table'[Value]),
        REMOVEFILTERS('Table'[Category])
    )

     

     

    1. Then on the original card, select the label property and change the color from what is probably black to use the fx button conditional format:
      1.  

      2. Then select the Field Value setting, and select the measure you used -  Vs Average in my case.
      3.  

     

    You can see my PBIX here if you want to play with it a bit. You can get rid of my green/red/black text and use hex codes as long as they are in the format "#000000" with the # sign to tweak those colors.

7 Replies

  • edhans's avatar
    edhans
    Icon for Community Champion rankCommunity Champion

    Hi Anonymous, this is a multistep process.

    1. Compute a measure that returns your color selections. I used this:

     

     

    Vs Average = 
    VAR varCurrentValue = SELECTEDVALUE('Table'[Value],0)
    VAR varAverage = [Average Value]
    RETURN
        SWITCH(
            TRUE(),
            varCurrentValue > varAverage, "Green",
            varCurrentValue = varAverage, "Black",
            varCurrentValue < varAverage, "Red"
        )

     

     

      1. So if the current selected value (I used a slicer to select a value) is greater than the Average Value measure, return Green, if equal, black, if below, red. The average value measure is:

     

     

    Average Value = 
    CALCULATE(
        AVERAGE('Table'[Value]),
        REMOVEFILTERS('Table'[Category])
    )

     

     

    1. Then on the original card, select the label property and change the color from what is probably black to use the fx button conditional format:
      1.  

      2. Then select the Field Value setting, and select the measure you used -  Vs Average in my case.
      3.  

     

    You can see my PBIX here if you want to play with it a bit. You can get rid of my green/red/black text and use hex codes as long as they are in the format "#000000" with the # sign to tweak those colors.

  • Anonymous's avatar
    Anonymous
    Not applicable

    HI Anonymous 

     

    You can conditionaly format the background of the card.

    and the data label of the card.

     

    • Anonymous's avatar
      Anonymous
      Not applicable

      Yes Anonymous I know you can conditionally format the card, my question is, what measure do I use to say if [current value] is greater than [average value] then 'green' else if [current value] is less than [average value] then 'red' else 'black'

      • Anonymous's avatar
        Anonymous
        Not applicable

        hi Anonymous 

         

        I would create a measure which return 1 or 0 and -1 for us, and use it to conditionally format.

  • Anonymous , You can create a color measure and use that under conditional formatting with field option.

    example

    Color sales = if(AVERAGE(Sales[Sales Amount])<170,"green","red")
    Color Year = if(FIRSTNONBLANK(Table[Year],2014) <=2016,"lightgreen",if(FIRSTNONBLANK(Table[Year],2014)>2018,"red","yellow"))

     

    Color Field - Color Measure - Conditional formatting
    https://radacad.com/dax-and-conditional-formatting-better-together-find-the-biggest-and-smallest-numbers-in-the-column
    https://docs.microsoft.com/en-us/power-bi/desktop-conditional-table-formatting#color-by-color-values

    icon based
    https://exceleratorbi.com.au/conditional-formatting-using-icons-in-power-bi/
    https://community.powerbi.com/t5/Desktop/FORMAT-icon-set-for-use-in-a-data-card/td-p/811692