---
# System prepended metadata

title: SZ 8. Vizualizace

---

---
tags: Společný základ
---
# SZ 8. Vizualizace
*Vizualizace: Základní metriky pro hodnocení kvality vizualizace (efektivita a expresivita), osm základních vizuálních proměnných. Základní vizualizační techniky pro 1D, 2D, 3D (explicitní a implicitní reprezentace povrchu). Techniky pro vizualizaci multidimenzionálních dat (paralelní souřadnice, RadViz, scatterplot matricec) a hierarchických struktur (treemaps, dimensional stacking). Základní třídy interakčních technik (fisheye, perspektivní stěny), specifika aplikace interakčních technik v prostoru samotných dat a v prostoru jejich atributů.*

Zdroj: https://is.muni.cz/auth/el/fi/podzim2019/PV251/um/study_material/study_material_in_czech/

Zdroj2: https://is.muni.cz/el/1433/jaro2016/PV251/um/61907192/4_vizualizace_prostorovych_dat.pdf

---
## Základní metriky pro hodnocení kvality vizualizace (efektivita a expresivita)

Máme 2 základní metriky, důležité jsou hlavně, když chceme měřit přenos informací, které daná vizualizace vyjadřuje.

**1. Expresivita (významnost)**

Měříme **koncentraci informace** v dané vizualizaci. Vyjadřujeme ji jako:
$$M_{exp} = \frac{zobrazená\ informace}{informace,\ kterou\ chceme\ sdělit}$$

- pokud $M_{exp} == 1$, expresivita je ideální
- pokud $M_{exp} < 1$, zobrazujeme méně informace, než jsme chtěli
- pokud $M_{exp} > 1$, zobrazujeme více informace, než bychom měli - nebezpečné, neboť informace zobrazené navíc mohou interferovat s interpretací základní informace.

**2. Efektivita**

Vizualizace je efektivní, pokud ji umíme interpretovat a zobrazovat (rendrovat) rychle a přesně.

$$M_{eff} = \frac{1}{1 + interpret + render}$$

- platí $0 \leq M_{eff} \leq 1$
- je-li hodnota malá, buď čas pro interpretaci, nebo čas potřebný k rendrování je velký. Naopak, jsou-li oba časy krátké, hodnota se blíží 1.

**Příklad**
![enter image description here](https://www.fi.muni.cz/~xslanin/szz/vis_1.png)
Obě vizualizace vyjadřují stejnou informaci, jejich **expresivita** může být považována za stejnou. Obě reprezentace jsou vyrendrovány také cca stejně rychle. **$M_{eff}$ je ale různá**. Pro některé typy dotazů je repr. vpravo rychlejší ("Které auto má nejméně ujetých km?"), naopak pro rozšířené dotazy, jako: "Které auto pod $11k má nejméně ujetých km?" je efektivnější repr. vlevo.

## Osm základních vizuálních proměnných
Pro kódování různých vstupních dat se používají tzv. **grafická primitiva (značky=marks)**. Samotné značky ale informaci nezobrazí, je třeba je umístit do prostoru (zakóduje se tak podobnost/rozložení dat).

Obecně rozlišujeme 8 způsobů jakými mohou grafické objekty kódovat informaci = 8 vizuálních proměnných:
1. pozice
1. tvar
1. velikost
1. jas
1. barva
1. orientace
1. textura
1. pohyb

Snažíme se pomocí nich maximalizovat efektivitu vizualizace.

### Pozice
Je umístění jednotlivých grafických prvků v prostoru obrazovky. Je prvním krokem v porozumění vizualizace a platí, že čím větší je rozložení grafických prvků po obrazovce, tím větší množství informací jsme schopni předat. Pozice nám pomůže zodpovědět otázky, jako: "Kopírují data některá ze známých rozložení?", "Jsou v datech rozpoznatelné nějaké trendy?"

Další možností jak objevit vztahy uvnitř dat je scaling = změna velikosti. Ve většině případů chceme použít doplňkovou grafiku, která popisuje prostor: Např. **osy** - definují rozsah hodnot a popisek, ke které části dat se vztahují.

### Tvar
Značky jsou grafická primitiva reprezentující data. Při jejich použití je třeba vzít v úvahu hlavně jejich rozlišitelnost mezi ostatními značkami.
Tato vizualizace používá různé tvary značek pro rozlišení různých typů aut. Umíme pomocí ní identifikovat různé clustery.
![enter image description here](https://www.fi.muni.cz/~xslanin/szz/vis_2.png)

### Velikost, Jas, Textura
Všechny 3 jsou používány k reprezentování další datové vlastnosti.

**Velikost** lze mapovat na interval (diskr. proměnné), i spojité proměnné, je použitelná zejména pro datové množiny s malou kardinalitou (je obtížné odlišit značky, které se velikostně liší jen minimálně).
**Jas** - používají se *navzorkované odstíny jasu*, neboť lidské oko neumí rozlišit všechny existující stupně jasu. K maximalizování vnímatelnosti rozdílů se používá lineární škála.
**Textura** - kombinace několika ostatních vizuálních proměnných, včetně značek, barvy a orientace. Nejčastěji spojována s polygony, regiony a povrchy. Ve 3D je textura zpravidla
považována za atribut geometrie.

### Barva
Barvy můžeme zobrazovat v různých color modech (např RGB) a jeden z populárních je HSL který definuje barvu třemi parametry: hue (odstín), saturation (sytost), lightness (jasnost)
![image](https://hackmd.io/_uploads/SyaSPWMHR.png =400x)

Pro využití barvy je třeba nejprve definovat tzv. **colormap**, která specifikuje vztah mezi rozsahem hodnot a jednotlivými hodnotami barev.
Oblíbené typy colormaps:
![enter image description here](https://www.fi.muni.cz/~xslanin/szz/vis_3.png)

**Problém s rainbow colormap:** 
![image](https://hackmd.io/_uploads/HJT__WfrA.png)


### Orientace
Popisuje, jak je příslušná značka orotována v závislosti na datové proměnné
Příklad:
![enter image description here](https://www.fi.muni.cz/~xslanin/szz/vis_4.png)
Nejnižší hodnoty jsou mapovány na značku směřující nahoru, zvyšující hodnoty rotují podle směru hod. ručiček.

### Pohyb
Pohyb může být asociován s kteroukoli z výše uvedených proměnných, důležitým aspektem je směr, případně větší-menší, světlejší-tmavší, atp.

## Základní vizualizační techniky pro 1D, 2D, 3D (explicitní a implicitní reprezentace povrchu)

Více lze najít: [TU](https://is.muni.cz/el/1433/jaro2016/PV251/um/61907192/4_vizualizace_prostorovych_dat.pdf)


### 1D

Máme jednodimenzionální sekvenci dat o jedné proměnné.
Mapujeme podél **jedné osy**, data musí být škálována, abychom je mohli zobrazit v rozsahu dimenze obrazovky s tím, že část musíme rezervovat na podpůrné prvky (zobrazení os, labels, ...). V principu 1D vizualizace znázorňujeme jako křivku. Je to 1D protože nám jde hlavně o data na y ose a data na x ose dodávají kontext.
![](https://i.imgur.com/ZVCj964.png =500x)

### 1D multivariate data

Data s vícero proměnnými nebo vícero hodnot pro jeden datový vstup. 1D chápeme, jako že se data indexují jedním číslem (jako časová řada), ne že mají 1 hodnotu.

#### Juxtapositioning

přikládání více vizualizacíí k sobě
![](https://i.imgur.com/NElgBUN.png =500x)

#### Superimpositioning

překládávní více vizualizací přes sebe
![](https://i.imgur.com/dnKLIZE.png =500x)


### 2D

Dáta obsahujú 2 priestorové dimenzie. Vizualizujeme pomocou:



- **obrázok** (napr. obázok získaný z tomografie)
- **reliéf** (rubber sheet - dáta mapujeme na výšku v 3D priestore, vzniká povrch)
    - mořská hladina a její přechod na pevninu na Floridě
![image](https://hackmd.io/_uploads/BkEvYZzS0.png)
- **cityscape** (vykresľujeme 3D objekty na rôzne miesta v rovine)
    - hustota leteckého provozu nad Spojenými Státy v určitém časovém okamžiku
![image](https://hackmd.io/_uploads/SyUtKWzBC.png)
- **bodový graf** (scatterplot)
- **mapa**
	- lineáne vlastnosti (sekvence spojených souřadnic, které jsou vykresleny jako úsečkové segmenty, napr. cesta, rieka)
	-   plošné vlastnosti (uzavřené křivky, napr. jazero/plocha štátu)
	- bodové vlastnosti (reprezentovány symbolem umístěným do dané lokaci, například škola, divadlo)
- **kontúra (izobary)** - Kontura (nebo-li obrys) je hraniční informace představující spojitý jev (nadmořská výška, teplota). Isobar -- a line on a map connecting places of equal atmospheric pressure, usually reduced to sea level for purposes of comparison, at a given time or period.
![enter image description here](https://www.fi.muni.cz/~xslanin/szz/vis_5.png)

### 2D multivariate
To samé jako u 1D akorát v 2D, tj:

#### Juxtapositioning
![](https://i.imgur.com/igbvVPs.png =300x)

#### Superimpositioning
![](https://i.imgur.com/0kvsTCh.png =300x)


### 2D vektorové pole

Vektorové pole přiřazuje vektor každému bodu v prostoru. Příklad: Magnet kolem sebe vytváří pole, nebo vítr v nějakém okamžiku.


#### Quiver (Hedgehog) plot

Zobrazuje vektorové pole jako mřížku šipek. Používaný například pro graf směru a síly větru zobrazeným na mapě.

![quiver plot](https://hackmd.io/_uploads/rJHxtSMBA.png)



#### Line integral convolution ([LIC](https://en.wikipedia.org/wiki/Line_integral_convolution))

LIC zobrazuje vektorové pole pomocí zašumnělé textury. Začínáme s náhodným černobílým šumem. Pro každý bod spočítáme kousek trajektorie, po které by se v poli pohyboval. Trajektorie má barvu originálního bodu. Ve výsledném obrázku nastavíme každý pixel na průměrnou barvu všech trajektorií, které skrz něj prošli.


![image](https://hackmd.io/_uploads/BklIFrfB0.png)

### 3D

#### Explicitní povrch

Při explicitní reprezentaci povrchu se snažíme přímo mít uložené konkrétní souřadnice bodů na povrchu. Protože těch bodů je nekonečně mnoho, rozložíme povrch na menší části, které samostatně popíšeme.

Používají se 2 hlavní varianty:
1. přímý seznam vrcholů, hran a rovin, které je spojují
    - např. triangle mashes
        ![image](https://hackmd.io/_uploads/H1r0JJQrR.png =300x)

1. povrch objektu reprezentujeme několika funkcemi.:
    - příklad válec:
        - horní podstava: $f(t) = (\cos(t), 1, \sin(t))$ pro $0 \le t \le 2\pi$
        - dolní podstava: $f(t) = (\cos(t), 0, \sin(t))$ pro $0 \le t \le 2\pi$
        - plášť: $f(t, h) = (\cos(t), h, \sin(t))$ pro $0 \le t \le 2\pi, 0 \le h \le 1$
    - při vykreslování dosazujeme za parametry a tím získáváme souřadnice na bodů na povrchu
    - hladkost povrchu ovlivňujeme granulárností při dosazování parametru funkce
        - např: pro $t=0, 0.1\pi, 0.2\pi, \dots, 2\pi$ je povrch mnohem hladší než pro $t=0, \pi, 2\pi$

#### Implicitní povrch

- povrch reprezentujeme jako body splňující rovnost
- například koule se středem v počátku souřadnic a s poloměrem 5:
$$f(x, y, z) = x^2 + y^2 + z^2 - 25$$
- pro body povrchu platí $f(x, y, z) = 0$
- pro body uvnitř objektu platí $f(x, y, z) < 0$
- lze snadno ověřit, zda je bod uvnitř nebo vně objektu
    

## Techniky pro vizualizaci multidimenzionálních dat 

Multidimenzionálne dáta sú n-tice, ktoré sú v určitej relácií (napr. záznamy v relačnej databáze).


### Paralelné súradnice

Metóda vizualizácie multidimenzionálnych dát umožňujúca analýzu. 

Bod v multidim. priestore je reprezentovaný lomenou čiarou, ktorej vrcholy sú umiestnené na paralelných osách. Osy sú vertikálne a rovnomerne rozložené. Pozícia vrcholu na i-tej ose odpovedá i-tej súradnici zobrazovaného bodu.
Nevýhody: Správna interpretácia môže trvať dlhšiu dobu.

![image](https://hackmd.io/_uploads/SJWOd1QB0.png)



### RadViz

RadViz vizualizace států US podle jejich produkce jednotlivých typů energie (1 bod = 1 stát):

![image](https://hackmd.io/_uploads/S1IXRsoV0.png =400x)


#### Jak sestrojit RadViz: 

1. Všechny proměnné (featury) přeškálujeme na stejný range (např 0 - 1)
1. Naneseme proměnné rovnoměrně na obvod kružnice, těmto bodům říkáme "kotvy".
1. Spočítáme souřadnice každého pozorování a naneseme do kružnice


#### Výpočet souřadnic RadVizu:

Intuitivně, bod v kružnici je přitahovaný pružinou ke každé kotvě a síla pružin je proporční velikostem featur. Například, *Washington* má vysokou produkci vodní energie, proto bod Washingtonu táhne velmi silná pružina ke kotvě *Hydro*.

Formálně:

|  | |
| ------- | -------- |
| $\vec{A_i}$  | pozice (souřadnice $x$, $y$) kotvy pro featuru $i$ v RadVizu 
| $\vec{v}$    | pozorování, které chceme umístit (vektor hodnot featur)
|$v_i$         | hodnota $i$-té featury
|$\vec{p}$     | pozice (souřadnice $x$, $y$) pozorování $v$ v RadVizu  
|$\vec{0}$     | nulový vektor

Pro umístění bodu platí:

$$\sum_{i} (\vec{A_i} - \vec{p}) \cdot v_i = \vec{0}$$

$v_i$ zde figuruje jako tuhost pružiny, $\vec{A_i} - \vec{p}$ jako "nataženost". Dohromady to vyjadřuje, že celkově se napětí všech pružin vzájemně vyruší - tzn. $p$ je v ekvilibriu.

Z rovnice ekvilibria lze vyjádřit pozici bodu:

$$ \vec{p} = \frac{\sum_i \vec{A_i} v_i}{\sum_i v_i} $$

Jde tedy o průměr kotev, vážený hodnotama featur.


#### Vlastnosti:

- (+) výsledný graf je intuitivní
- (-) pořadí proměnných (kotev) ovlivňuje výsledek vizualizace
  - to může vizuálně zdůraznit nebo potlačit vzory v datech
  - můžeme nechat uživatele měnit pořadí
- (-) je citlivá na outliery kvůli škálování
- (-) různá měření se mohou zobrazit na stejný bod grafu 


### Scatterplot Matrices

![image](https://hackmd.io/_uploads/HJih1E3NC.png)


- pro N featur (dimenzí) vyrobí matici N*N
- matice obsahuje scatterploty párů proměnných
- každý pár je zobrazen 2x, akorát osově souměrný
- na diagonále bývají
    - popisy individuálních dimenzí (průměry) nebo
    - histogramy nebo
    - odhadovaná hustota (viz obrázek)
- pokud máme nějaké labely jako kategorickou proměnnou
    - obarvíme podle něj body ve scatter-plottech
    - na diagonále se vykreslí hustoty/histogramy zvlášť pro každou třídu

### Hierarchické dáta

Sú jedny z najbežnejších spôsobov ukladania vzájomných vzťahov medzi dátami.

#### Tree Maps

Zobrazujú hierarchické dáta pomocou vnorených obdĺžnikov, ktoré reprezentujú ďalšie informácie pomocou veľkosti a farby. Všetky informácie sú na jednej obrazovke, nie je nutné scrollovať. Radia sa medzi tzv. **space-filling** metódy.

![image](https://hackmd.io/_uploads/SymBZgQHA.png)


#### Skladanie dimenzií (dimensional stacking)
Je technika, ktorá vizualizuje N-dimenzionálne dáta do 2D obrázku tak, že sa minimalizuje zakrytie dát za súčasného zachovania väčšiny priestorovej informácie.

Popis algoritmu:
1. Diskretizuj rozsahy v každej dimenzií (t.j. binning hodnôt atribútov), veľkosť rozsahu = kardinalita dimenzie.
2. Dimenzie s dvomi najnižšími kardinalitami sa použijú na rozdelenie obrazovky na sekcie. Tá určuje, koľko sekcií je generovaných vo vertikálnej a horizontálnej ose.
4. Ďalšia sekcia je použitá pre rekurzívnu definíciu virtuálnej obrazovky v ďalších dvoch dimenziách.
5. Proces sa opakuje kým nie sú spracované všetky dimenzie.

Algoritmus je fajn vysvetlený aj [tu (od str. 20)](https://webpages.uncc.edu/jyang13/infovis2010/MultiVis.pdf).

Príklad pre iris dataset (4-dimenzionálny)
![iris_stacking](https://i.imgur.com/cUvKu3H.png)

Bin sa vyfarbí ak nejaký datapoint spĺňa danú kombináciu hodnôt atribútov.

## Základní třídy interakčních technik (fisheye, perspektivní stěny)

Interakcia je mechanizmus, ktorým dokážeme ovplyvniť čo a ako uživateľ vidí. Základné triedy (**operátory**): Navigácia, výber, filtrácia. 


### Navigácia

Používa sa pre vyhľadanie podmnožiny vstupných dát, orientácia pohľadu na tieto dáta. V 3D je určená pomocou pozície kamery, smerom pohľadu, tvarom, alebo stupňom level-of-detail (LOD)

Příklad: Google maps - můžeme posouvat, otočit, přiblížit.


### Výber

Pri výbere uživateľ izoluje podmnožinu komponent pre zobrazenie, ktoré neskôr podliehajú ďalším operáciam (zvýraznenie, presun). Rieši sa tu **granularita výberu** (môžem vybrať najmenšiu komponentu, napr. vrchol na hrane, alebo širší región okolo danej lokácie).
Výber je realizovaný cez klikanie, kreslenie, výberom cez laso, atď.

### Filtrácia

Je redukcia počtu dát cez nastavenie obmedzení, ktoré špecifikujú ktoré dáta budú zachované a ktoré odstránené.
Napr. pre určenie rozsahu záujmu používame slidery, rôzne tlačítka na zachovanie/schovanie časti vizualizácie (napr. funkcia schovania stĺpcov v Exceli).


**Rozdíl mezi filtací a výběrem:**
- filtrování: výběr části datasetu pro zobrazení
    - např. při zobrazení modelu domu vybereme pro zobrazení jen jedno patro
- výběr: zvýraznění části hodnot v současné vizualizaci, vidíme celý dataset
    - např. necháme si zvýraznit všechny elektrické zásuvky


### Základné interakčné operandy: 
Priestor obrazovky (pixely), priestor dátových hodnôt, priestor dátových štruktúr, priestor atribútov, priestor 3D objektov

### Priestor obrazovky (pixely)
Navigácia v priestore obrazovky sa typicky skladá z akcií ako skreslenie (distortion), zoomovanie, alebo rotácia. Skreslenie zahŕňa transformáciu na pixeloch, napr. $(x', y') = f(x, y)$. Zväčšenie v danom bode je deriváciou tejto transformácie. Príklad: **rybie oko (fisheye)**. 

![enter image description here](https://www.fi.muni.cz/~xslanin/szz/vis_12.png)

Implementácia fisheye:
1. Špecifikujeme stredový bod $(c_x, c_y)$ transformácie, polomer čočky (lupy) $r_i$ a veľkosť vychýlenia $d$.
1. Súradnice sa transformujú do polárnych súradníc relatívne k stredovému bodu.
1. Efekt lupy sa ziska pomocou transformácie aplikovanej v rámci polomeru $r_i$.

Problém s fisheye: Prekrývanie pixelov a diery.
Riešenia: Prekrývané pixely sa spriemerujú, diery vyriešime pomocou interpolácie.

**Fisheye další příklad**
![image](https://hackmd.io/_uploads/ryw33bGHC.png)

### Priestor dátových hodnôt / atribútov
Typické sú výber a filtrácia. Výber hodnôt je podobný databázovým dotazom, používa sa ineraktívny výber.

### Priestor dátových štruktúr
Dáta môžu byť štruktúrované napr. do zoznamov, tabuliek, gridov, hierarchií, grafov. Navigácia v priestore dátových štruktúr zahŕňa pohyb pohľadovej špecifikácie pozdĺž štruktúry (napr. zobrazovanie sekvenčných skupín záznamu, prechádzanie hierarchickou štruktúrou)
Príklady techník výberu v priestore dátovej štruktúry:
- **brushing** - umožňuje riadiť výber dát v hierarchií clusterov, príklad interakcie: zvýraznenie dát, ktoré spadajú do určitej vetvy stromu
- **InterRing** - zobrazuje hierarchiu radiálne a pomocou vyplňovania priestoru, príklad interakcie: výber koncových uzlov nad spoločným predkom (obrázok nižšie).
![enter image description here](https://www.fi.muni.cz/~xslanin/szz/vis_13.png)

### Priestor objektov
Dáta sú mapované na geometrické objekty, ktoré následne podliehajú interakciám a transformáciam. Výber: klikanie na objekty záujmu / zvolenie cieľových objektov zo zoznamu.
Typický príklad premapovania je napr. prepínanie mapovania geografických dát z roviny na guľu / naopak.

Príklad distrorzie v tejto forme interakcie sú tzv. **perspektívne steny** a **hyperbolické projekcie**.
![enter image description here](https://www.fi.muni.cz/~xslanin/szz/vis_14.png)

**Perspektívne steny** (perspective walls) sú metódou pre navigáciu vo vizualizácií veľkého počtu dokumentov. Zobrazuje sa jeden panel pohľadu na povrch objektu, ktorý je umiestnený ortogonálne k smeru pohľadu a ostatné panely sú orientované tak, že miznú so vzdialenosťou. Uplatňuje sa tu perspetívna deformácia.
![enter image description here](https://www.fi.muni.cz/~xslanin/szz/vis_15.png)

