Blog

Creative visualisations in Qlik Sense: Density plot

Terézia Blašková

Process development manager

Pro některé lidi je jednou ze slabin Qlik Sense omezený počet vizualizací, ale s trochou snahy a „out-of-the-box“ přemýšlení lze tyto překážky překonat a vytvářet kreativní vizualizace v Qlik Sense. Dnes si vytvoříme hustotní graf s malou pomocí R.

Existuje mnoho případů použití, které vyžadují nějaký druh porovnání. Můžete být požádáni porovnat obchodníky, oddělení, země, technologie nebo dokonce druhy květin. Dnes budeme pracovat se známým datovým souborem Iris. Na jednu stranu se cítím trochu provinile kvůli nedostatku kreativity při výběru datového souboru, na druhou stranu je tento dataset snadno ke stažení, snadno pochopitelný a umožňuje vytvořit pěkně vypadající hustotní graf. Data si stáhněte zde. CSV obsahuje 50 vzorků 3 různých druhů kosatců a atributy: délku kališních lístků (sepal length), šířku kališních lístků (sepal width), délku okvětních lístků (petal length) a šířku okvětních lístků (petal width) v cm. Nahrajte data do Qlik Sense tak, aby byl v datovém modelu pouze 1 tabulka, nejsou potřeba žádné transformace. Tabulku pojmenujte IrisData.

Ukaž mi čísla

Budeme porovnávat délku kališních lístků u 3 různých druhů. První, co mě napadne, je spočítat průměr pro každý typ kosatce. Někdo by mohl namítnout, že medián je lepší volba — a měl by pravdu. Pokud chceme zjistit střed dat, medián je obvykle lepší volba. Udělejme obojí: Averages and medians

Teď víme, že nejdelší kališní lístky má versicolor, ale co když se délky v rámci jednoho druhu výrazně liší? Čím větší je rozptyl, tím méně významné jsou rozdíly v průměrech. Velmi známou mírou variability je směrodatná odchylka:

Standard deviations

Nyní víme, že setosa má mnohem menší rozptyl než virginica. Poslední chybějící informací je tvar dat.

Vizualizace rozdílů

Jsou délky vychýlené (šikmé), nebo symetrické? Možná je některé rozdělení „špičatější“ než ostatní (mohli bychom také spočítat špičatost — kurtózu). Histogram by nám to mohl ukázat, ale nejsem velkým fanouškem histogramu v Qlik Sense. Nechápejte mě špatně — Qlik je skvělý BI nástroj, ale jednoduše není navržen jako statistický nástroj. Nejvíce mi chybí nastavení min/max hodnot na ose x (není dostupné ve verzi November 2019 a starších), které by bylo velmi užitečné pro porovnání tvaru, středů, šikmosti a kurtózy. Ale pracujme s tím, co máme:

Histograms
Histogramy

Nevím jak vy, ale tyto histogramy nám poskytly jen velmi málo informací vzhledem k potenciálu tohoto grafu. Ano, jsou zde rozdíly v tvarech, ale jak velké ty rozdíly jsou? Kvůli chybějícímu nastavení min/max na ose x nám unikají informace o rozdílech ve středech dat i v rozptylu. Například už víme ze směrodatné odchylky, že setosa má nejmenší rozptyl — ale vidíte to tady? Pokud se nepodíváte na hodnoty na ose x, můžete snadno dojít k závěru, že rozptyl všech tří je stejný — což by bylo daleko od pravdy. Budeme muset jít trochu hlouběji.

V Qlik Sense existují 2 pěkné vizualizace, které ukazují, kde se data nacházejí a jak velký je rozptyl — v jednom obrázku: distribučný graf vlevo a box plot vpravo. Pokud jste mistři box plotu, můžete v něm trochu vidět i tvar.

Distribution and box plot
Distribuce a box plot

To mi ale nestačí. Musí existovat lepší způsob, jak to všechno vidět pěkně v jednom jednoduchém obrázku. Pomůžeme si pomocí R a vytvoříme hustotní graf v Qlik Sense.

Použití R pro získání dat hustotního grafu

Použijeme R pro výpočet hodnot hustoty. Pokud se chcete dozvědět více o funkci hustoty a jejím fungování, podívejte se zde. Existují 2 způsoby, jak propojit R a Qlik Sense. Buď je ponechat odděleně a načíst výsledky z R do Qlik Sense jako jakýkoli jiný zdroj dat, nebo použít SSE R-plugin pro odeslání dat, spuštění R skriptu a přijetí výsledků přímo v Qlik Sense bez nutnosti ukládání externě. Následující řádky lze použít, pokud máte Qlik Sense integrován s R pomocí pluginu. S trochou znalostí R lze skript snadno upravit i pro běh mimo Qlik Sense.

IrisDataDensity: Load * Extension R.ScriptEval( '# install.packages(tidyverse, repos="http://cran.us.r-project.org"); //ponechte # pokud již máte balíček nainstalovaný # install.packages(magrittr, repos="http://cran.us.r-project.org"); //ponechte # pokud již máte balíček nainstalovaný library(tidyverse); library(magrittr);

data <- as.data.frame.list(q);

data %<>%
pivot_wider(names_from = "Species", values_from = "SepalLengthCm") %>%
apply(2, density, na.rm=TRUE) %>%
unlist(recursive=FALSE);
result <- as.data.frame( data[endsWith(names(data), ".x")|endsWith(names(data), ".y")]);
result %<>% mutate(DensID = row_number()) %>% select(DensID, everything()) %>% select(-c("Id.x", "Id.y")) %>% pivot_longer(cols = -"DensID") %>% separate(col = name, into = c("Iris", "Species", "Coordinate")) %>% mutate(Species = paste(Iris, Species, sep = "-")) %>% select(-Iris) %>% pivot_wider(names_from = "Coordinate", values_from = "value");',
IrisData{Id, SepalLengthCm, Species});

Skript přidá novou tabulku do našeho datového modelu:

Density plot: Data model

Vytvoření hustotního grafu

Jako základ použijeme standardní čárový graf. Nastavte následující:

  • x jako dimenzi skupiny
  • Species jako dimenzi čáry
  • y jako míru
  • přepněte čárový graf na plošný graf v sekci prezentace
  • v nastavení osy x zaškrtněte možnost Use continuous scale
  • nastavte popisky a název
Density plot
Hustotní graf délky kališních lístků podle druhu

Perfektní! Máme všechny odpovědi v jednom obrázku: jak se jednotlivé druhy liší z hlediska polohy, rozptylu a tvaru dat délky kališních lístků? Nejdelší kališní lístky jsou typické pro virginica a nejmenší pro setosa. Podívejte se na šířku grafu: rozptyl virginica je přibližně dvakrát větší než u setosa. Versicolor se zdá být mírně vychýlený a rozdělení setosa je více „špičaté“. Spusťte skript i pro další atributy kosatců, nebo ještě lépe: optimalizujte ho a upravte tak, aby počítal hustotu pro všechny míry SepalLengthCM, SepalWidthCm, PetalLengthCm a PetalWidthCm najednou.

Podívejte se také na poslední článek ze série Creative visualisations in Qlik Sense o animovaném scatter plotu.

Terézia Blašková
Process development manager

Mohlo by vás zajímat

Predikce 2026: Proč se AI bez důvěry v data nikdy nedostane do řízení firem

Na Qlik Sales Kick Off 2026 zaznělo mnoho vizí o budoucnosti AI. Jedna věc ale...

Predikce maloobchodního prodeje v Qlik Sense

V předchozím článku jsem se pokusil přiblížit, proč je dobré posouvat se za hranice datové...

Martin Kostic︱Top 5 books that influenced my life in 2021

Pokud si pamatuji, vždy jsem si užíval „konzumování znalostí“ z knih přímo do svého mozku....

Promluvme si o vašich datech.

Ať už řešíte plánování, reporting nebo AI, navrhneme další krok, který bude dávat smysl v kontextu vašeho byznysu.