Niekedy potrebujete v grafoch zvýrazniť pozadie pre niektoré body. Napríklad v čiarových grafoch, kde potrebujete odlíšiť predaje pre pracovné a nepracovné dni, pomocou rôznych farieb pre tieto typy dní. Grafy v Power BI síce podporujú dynamickú farbu pozadia, ale tá môže byť nastavená len na 1 farbu. A nemôžete ju dynamicky meniť pre každý bod na osi X. To, že to tam momentálne nie je, však neznamená, že to nejde. A preto sa teraz pozrieme, ako pomerne ľahko dynamicky vyfarbiť pozadie grafu pre pracovné dni a víkendy v Power BI.
Čo chceme dosiahnuť
Aby ste mali predstavu, čo chceme dosiahnuť, tak chceli by sme vytvoriť čiarový graf, ktorý obsahuje denné predaje pre cca. 1 mesiac. A jeho pozadie by sme chceli „naformátovať“ tak, že tie dni, ktoré sú pracovné, budú podfarbené na pozadí pomocou jednej farby, a víkendy budú podfarbené pomocou druhej farby. Aby užívateľ vedel ľahšie odlíšiť víkendové vs. nevíkendové predaje, a prípadne došiel ľahšie na závislosti v nich, resp. medzi nimi. Vo výsledku teda chceme spraviť nejaký takýto graf:
S čím začneme
Pre demonštráciu si to opäť ukážeme na našom vzorovom súbore Power BI. V prvom kroku si vytvoríme čiarový graf, kde:
- na os X dáme stĺpec DateKey z tabuľky Čas,
- do oblasti hodnôt dáme merítko Obrat z tabuľky Objednávky,
- graf vyfiltrujeme na obdobie 1.7.2001 až 24.7.2001,
- nastavíme, aby sa zobrazovali všetky dátumy na osi X (maliarsky valček => Os X => Typ: Kategorické),
- naformátujeme pole DateKey na osi X tak, aby zobrazovalo iba dátumy.
Graf by mal vyzerať nejako takto:
A v tomto grafe by sme teraz chceli dosiahnuť to, čo vidíte na obrázku vyššie – aby boli víkendové dni podfarbené jednou farbou, a pracovné dni druhou farbou.
Tu však nastáva problém. Čiarový graf síce podporuje dynamickú farbu pozadia:
…ale iba štýlom všetko alebo nič. Čiže buď to nastaví celé pozadie na nejakú farbu, alebo na žiadnu. Tá farba síce môže byť dynamicky vypočítaná, ale opäť – len 1 farba pre celé pozadie grafu, a nie pre každý bod na X-ovej osi. Preto na to budeme musieť ísť s trochou tvorivosti.
Ako dynamicky vyfarbiť pozadie grafu v Power BI
Využijeme na to klasické stĺpcové grafy. Tento stĺpcový graf špeciálne nastavíme, napasujeme na rozmery a umiestnenie nášho čiarového grafu, a umiestníme ho pod tento graf. Čím sa nám navonok podarí dynamicky vyfarbiť pozadie grafu pre tento čiarový graf. Aj keď v skutočnosti to budú 2 prekryté a vhodne nastavené grafy.
Začneme teda s tým, že si vytvoríme stĺpcový graf, v ktorom budú všetky stĺpce rovnako vysoké. To sa dá dosiahnuť buď cez klasický stĺpcový graf, do ktorého dáme merítko s konštantou (napr. so vzorcom Merítko := 30000), alebo ešte jednoduchšie – využitím 100%-ných grafov. Budeme potrebovať vytvoriť 100%-ný skladaný stĺpcový graf (6. graf vo vizualizačnom paneli Power BI), ktorý nastavíme spočiatku rovnako ako ten hlavný čiarový graf. Preto ten čiarový graf skopírujeme (klasicky Ctrl+C a Ctrl+V) a prepneme ho na ten 100%-ný graf. Výsledok by mal vyzerať takto:
Potom si potrebujeme v dátovom modeli vytvoriť merítko, ktoré bude vracať jednu farbu pre víkendy, a druhú farbu pre ostatné dni. Na určenie víkendov využijeme vypočítaný stĺpec Víkend v tabuľke Čas, ktorý už máme v dátovom modeli:
Následne si vytvoríme toto merítko, s takýmto vzorcom:
Farba pre pozadie grafu = IF ( SELECTEDVALUE ( 'Čas'[Víkend] ) = "víkend"; "#DDDDDD"; "#BBBBBB" )
Potom prejdeme znova do maliarskeho valčeku pre náš 100%-ný graf, a v ňom nastavíme podmienené formátovanie pruhov grafu pomocou tohto merítka, ktoré sme práve vytvorili:
- Farby údajov => Predvolená farba => fx => Formátovať podľa: Hodnota poľa => Na základe poľa: merítko „Farba pre pozadie“
Výsledok by mal vyzerať takto:
Tam vidíte, že pruhy pre víkendové dni majú inú farbu ako pre ostatné, pracovné dni.
Zloženie grafov
Následne potrebujeme cez maliarsky valček nastaviť v tomto 100%-nom grafe tieto nastavenia, aby sme z neho skryli a zamaskovali v ňom veci, ktoré nutne nepotrebujeme zobrazovať:
- Os X => Farba: Biela
- Os X => Minimálna šírka kategórie: 20
- Os X => Vnútorné odsadenie: 0%
- Os Y => Farba: Biela
- Os Y => Mriežka: Vypnúť
- Názov: Vypnúť
Výsledok by mal vyzerať takto:
A tento graf teraz využijeme na simuláciu pozadia čiarového grafu. Stačí spraviť tieto 2 jednoduché kroky:
- presunúť 100%-ný graf na pozíciu čiarového grafu (tak, aby bol nad čiarovým grafom),
- premiestniť 100%-ný graf pod čiarový graf – v hlavnom menu cez Formát => Presunúť ďalej => Presunúť dozadu:
Potom stačí kliknúť hocikde inde na prázdnu plochu v reporte, aby to Power BI Desktop prekreslil správne, a mali by ste dostať takýto výsledok:
Nakoniec vieme dynamicky vyfarbiť pozadie grafu
Nie je to síce ideálne, ale už sme blízko. Teraz už len stačí trocha chirurgickej práce a trpezlivosti. Stačí sa pohrať s rozmermi 100%-ného grafu, aby jeho stĺpce presne lícovali s bodmi na x-ovej osi v čiarovom grafe, a po chvíli snaženia sa by ste mali dostať už ideálny výsledok:
A presne to sme chceli. Dynamicky vyfarbiť pozadie grafu pre pracovné dni a víkendy v reporte Power BI. Napriek tomu, že to ešte stále nie je podporované, sa to dalo spraviť relatívne jednoducho, cez techniku vrstvenia grafov a pomocou trošky tvorivosti. Podobne ako sa dajú spraviť aj iné „nemožné“ veci, ktoré som ukazoval buď v starších článkoch, na webinári o pokročilej interaktivite alebo na jednom z mojich workshopov. A ako vidíte, tak stačili na to základné znalosti práce s Power BI. A hneď je deň krajší 🙂
Autor, tréner a expert na Power BI, PowerPivot a jazyk DAX. Založil som tento web, aby som pomohol dostať Power BI do širšieho povedomia, a aby som ľuďom ukázal, že moderný a komplexný reporting ide vyriešiť rýchlo a jednoducho. Po nociach vzývam Majstra Yodu a tajne plánujem ovládnutie vesmíru.