V predchádzajúcej časti sme ukázali nákladné možnosti názorného zobrazovania údajov pomocou grafov. Ešte názornejšie sú však animované grafy. Animácie je možné exportovať ako videá do súborov .MP4, alebo animovaný GIF. Animácia okrem názornosti umožňuje lepšie pochopiť dynamické procesy, alebo vývoj určitého trendu. V závere článku ukážeme postup vytvorenia obľúbeného vodorovného stĺpcového grafu v ktorom sa menia nielen hodnoty, ale aj usporiadanie.
Postup vytvorenia príkladov aj animácia je v krátkom videu
Najskôr ukážeme ako nakreslíme statický graf a uložíme ho na Google Disk ako obrázok vo formáte PNG. Hodnoty sú pre jednoduchosť definované priamo v kóde
Objekt Figure si môžeme predstaviť ako kontejner na zapuzdrenie grafických objektov, statických aj animovaných. Zaujímavejší by bol určite animovaný graf
from random import randint
import matplotlib.pyplot as plt
from matplotlib.animation import FuncAnimation
from google.colab import drive
# prázdne zoznamy pre hodnoty X a Y
x = []
y = []
# funkcia na zobrazenie jednej snímky animácie
def animacia(i):
pt = randint(1,9)
x.append(i)
y.append(pt)
# osi
ax.clear()
ax.plot(x, y)
ax.set_xlim([0,20])
ax.set_ylim([0,10])
ani = FuncAnimation(fig, animacia, frames=20, interval=500, repeat=False)
funkcia plot() vráti n-ticu s jedným prvkom. Pridaním čiarky do cieľa priradenia požiadate Python, aby rozbalil návratovú hodnotu a priradil ju
Postup vytvorenia animácie:
definujeme rozmery okna v ktorom sa bude vykresľovať animácia
inicializujeme premennú ciara, ktorá bude obsahovať súradnice x a y vykresľovaného grafu. Tieto sú pri inicializácii prázdne, pretože údaje súradníc sa počas animácie budú meniť kvôli animácii.
vytvoríme animačnú funkciu animate(i), kde i je číslo snímky a definujeme funkciu pre hodnotu v osi y
vytvorenie animácie, ktorá zobrazí 200 snímok za sekundu v intervale 20 mikrosekund.
Animácia nám umožní lepšie pochopiť niektoré metódy, ktoré sa dajú graficky zobraziť. Napríklad Visvalingam-Whyatt algoritmus umožňuje zjednodušiť zložité lomené čiary znižovaním počtu vrcholov pri zachovaní tvaru lomenej čiary a minimalizácii skreslenia. Táto technika sa využíva napríklad v kartografii. Zjednodušením lomených čiar môžeme zvýšiť výkon vykresľovania a zlepšiť interpretovateľnosť údajov.
Algoritmus vyhodnocuje dôležitosť každého vrcholu na základe zmeny v oblasti, ktorá by nastala, keby bol daný vrchol odstránený. Najskôr sa vypočíta plocha každého trojuholníka tvoreného tromi po sebe nasledujúcimi vrcholmi v lomenej čiare. Odstránenie vrcholov s najmenšími plochami spôsobí najmenšiu zmenu celkového tvaru krivky. Výsledná zjednodušená lomená čiara pozostávajúca zo zostávajúcich vrcholov je zjednodušená reprezentácia pôvodnej krivky, pričom si zachováva jej podstatné tvarové charakteristiky. Pozrite si výsledok - animovaný graf. Sledujte obrázok dlhšie, spočiatku sú zmeny menej nápadné.
Najlepšie sme si nechali na koniec. Určite ste videli efektné animované stĺpcové grafy ako sa niečo menilo v priebehu času. Napríklad zárobky najbohatších ľudí na svete, počet predaných albumov spevákov a podobne. Ukážeme animovaný stĺpcový graf najľudnatejších miest v priebehu histórie, pričom grafy budú usporiadené od najväčšieho počtu obyvateľov zostupne. Dokážeme to na 35 riadkov kódu (ak nepočítame komentáre), pričom tretina riadkov je tam kvôli vzhľadu grafu. Tu je ukážka pre kratší časový interval 1990 - 2000