Úvod do Matplotlib v Pythonu
Matplotlib představuje v Pythonu oblíbenou knihovnu určenou pro vizualizaci dat, kterou s oblibou využívají zejména odborníci v oblasti strojového učení pro tvorbu statických i interaktivních grafických výstupů.
Co je Matplotlib?
Za vznikem Matplotlib stojí John D. Hunter, který ji poprvé představil v roce 2003. Aktuální verze, označená číslem 3.4.2, byla vydána 8. května 2021.
Základní kód této knihovny je napsán v jazyce Python, přičemž menší část využívá Objective-C a JavaScript, což zajišťuje její multiplatformní kompatibilitu.
Matplotlib úzce spolupracuje s knihovnou NumPy, což je numerické rozšíření Pythonu. Tato integrace a otevřený zdrojový kód z ní činí atraktivnější alternativu k MATLABu.
V rámci aplikací Python GUI umožňuje Matplotlib generovat statické grafy pomocí objektově orientovaného API, které je její součástí.
Uživatelé mají možnost vizualizovat svá data pomocí různých typů grafů, jako jsou bodové grafy, histogramy, sloupcové grafy, koláčové grafy, liniové grafy a krabicové grafy, a to vše jen s několika řádky kódu v Pythonu.
Matplotlib je možné efektivně využívat v různých prostředích, od Python shellu, přes Jupyter notebook a Jupyter lab, až po vývojová prostředí jako Pycharm nebo Anaconda. Stejně tak je kompatibilní s webovými aplikačními servery jako Flask a Django na různých platformách.
Podobně jako v MATLABu, i zde lze rozsáhle ovlivňovat vzhled grafů, včetně písem, čar, barev a stylů.
Po tomto krátkém úvodu do knihovny Matplotlib v Pythonu se podíváme na to, jak ji můžete nastavit ve vašem systému.
Nastavení prostředí Matplotlib
Stejně jako ostatní balíčky a knihovny v Pythonu, i Matplotlib s jejími závislostmi můžete jednoduše nainstalovat na jakýkoli operační systém pomocí správce balíčků pip.
Předpokladem je, že máte na svém systému nainstalovaný Python a balíček pip.
Pro ověření, zda máte tyto nástroje nainstalovány, použijte následující příkazy, které vám zobrazí jejich verze.
Ověření instalace Pythonu
Python --version
Ověření instalace pip
pip -V
Instalace Matplotlib
Následující příkaz nainstaluje balíček Matplotlib z Python Package Index (PyPI).
python -m pip install matplotlib
Tento příkaz automaticky stáhne a nainstaluje všechny potřebné balíčky pro Matplotlib. Po úspěšné instalaci byste měli obdržet potvrzovací zprávu.
Pro finální ověření, že instalace Matplotlib proběhla v pořádku, zadejte následující příkaz, který zobrazí verzi Matplotlib v příkazovém řádku.
import matplotlib matplotlib.__version__
Vývojáři, kteří preferují instalaci nekompilovaného balíčku Matplotlib, by měli mít kromě závislostí, instalačních skriptů, konfiguračních souborů a oprav i přístup ke správnému kompilátoru ve svém systému.
Tato specifická nekompilovaná instalace Matplotlib však může být komplikovaná, zejména pro začátečníky. Proto je efektivnější a rychlejší použít jednoduchý jednořádkový příkaz pro instalaci knihovny během několika sekund. 🤔
Po dokončení instalace nezapomeňte importovat balíček do svého prostředí, abyste mohli začít využívat jeho funkce.
Možnosti vykreslování v Matplotlib
Matplotlib nabízí širokou škálu možností pro vizualizaci dat. Umožňuje také přizpůsobení grafů pomocí různých témat, barev a palet, které uživatelé mohou využít k úpravě vykreslených dat.
Mezi tyto možnosti vykreslování patří:
#1. Sloupcové grafy
Sloupcové grafy jsou ideální pro vizuální porovnání kvantitativních hodnot v rámci stejné kategorie.
Matplotlib používá obdélníkové pruhy, kde jejich délka a výška odráží proporcionální hodnoty. Tyto pruhy mohou být zobrazeny jak horizontálně, tak vertikálně.
Pro generování sloupcových grafů Matplotlib využívá funkci plt.bar().
Pro manipulaci s tímto grafem můžete použít i další funkce. Například plt.xlabel() a plt.ylabel() slouží k označení os x a y grafu.
Funkce plt.title() umožňuje pojmenovat graf, zatímco plt.savefig() slouží k uložení obrázku. Nejdůležitější funkcí je plt.show(), která graf zobrazí.
#2. Koláčové grafy
Proporcionální rozložení položek v rámci stejné kategorie je nejlépe vizualizovat pomocí kruhového statistického grafu, známého jako koláčový graf.
Koláčové grafy znázorňují data v procentuálním vyjádření. Celková plocha grafu odpovídá 100 % dat, zatímco jednotlivé výseče představují procentuální podíl z celku.
Matplotlib k vykreslení a úpravě parametrů koláčového grafu používá funkci plt.pie().
Pro vykreslování koláčových grafů se často využívají další parametry, jako je například `autopct`, který umožňuje zobrazit hodnotu každé výseče až na jedno desetinné místo.
Koláčové grafy jsou oblíbené v obchodních organizacích pro prezentaci důležitých informací, jako jsou operace, prodeje nebo zdroje.
#3. Histogram
Histogram vizualizuje rozložení číselných dat pomocí spojitých intervalů pro rozdělení dat do samostatných sekcí.
Hlavní rozdíl mezi histogramem a sloupcovým grafem spočívá v typu zpracovávaných dat. Histogramy pracují s kontinuálními daty, zatímco sloupcové grafy pracují s daty kategorickými.

Matplotlib používá funkci hist(), která k vytvoření histogramu používá pole náhodných nebo definovaných hodnot.
#4. Liniové grafy
Liniové grafy jsou ideální pro zobrazení vztahu mezi dvěma datovými sadami, které mohou být numerické i kategorické, na základě os X a Y.

Liniové grafy se často používají pro sledování změn hodnot dat v průběhu času.
#5. Bodové grafy
Bodové grafy slouží k zobrazení vztahu, včetně korelace, mezi proměnnými v datech. Jsou také užitečné pro identifikaci odlehlých hodnot.

Bodové grafy pomocí teček znázorňují vztah mezi datovými proměnnými a to, jak změna jedné proměnné může ovlivnit druhou.
Jak vytvářet grafy v Matplotlib
Matplotlib nabízí různé funkce pro vytváření různých typů grafů. K vytvoření grafu je navíc potřeba jen několik řádků kódu.
Níže se podíváme na to, jak lze vytvářet různé typy grafů s využitím různých funkcí Matplotlib.
#1. Sloupcový graf v Matplotlib
Sloupcové grafy, jak již bylo vysvětleno, zobrazují kategorie dat pomocí sloupců a os, které reprezentují srovnání kategorií na jedné ose a jejich odpovídající hodnoty na druhé ose.
Funkce bar() v Matplotlib využívá různé argumenty pro definování rozložení pruhů, jak je znázorněno níže.
plt.bar(x, y, height, width, bottom, align)
Parametry x a y udávají souřadnice x a y sloupců v grafu. Parametr width definuje šířku sloupce a parametr height jeho výšku.
Představme si například počet psů a koček v útulku pro zvířata s názvem x.
import matplotlib.pyplot as plt
import numpy as np
x = ["Cats", "Dogs"]
plt.xlabel("Kočky a psi v útulku")
plt.ylabel("Počet zvířat v útulku")
plt.title("Počet koček a psů v útulku x")
y = [300, 350]
plt.bar(x, y, color="black", width = 0.5)
Výstup:
Výstup sloupcového grafu v Matplotlib
Stejně jako v předchozím příkladu můžete dále specifikovat barvu pruhů pomocí atributu color. Funkce plt.xlabel a plt.ylabel pojmenovávají osy x a y, zatímco funkce plt.title udává název grafu.
#2. Jak vytvořit koláčový graf
Matplotlib používá funkci pie() z modulu pyplot pro vykreslení koláčového grafu.
Tato funkce prezentuje data k vykreslení ve formě pole.
Syntax:
matplotlib.pyplot.pie(data, explode=None, labels=None, colors=None, autopct=None, shadow=False)
Parametr colors nastavuje barvu výsečí koláče. Pro každý řez můžete použít pole hodnot pro určení jeho barvy.
Pro zahrnutí detailů o každé výseči v koláči, argument `autopct` přidává číselná procenta, která každý řez představuje, s využitím formátování Python string. Argument explode akceptuje pole hodnot začínající od 0.1, které definuje vzdálenost řezu od středu koláče.
Vytvořme si koláčový graf, který zobrazuje procentuální podíl zdrojů alokovaných pro konkrétní projekt.
import matplotlib.pyplot as plt
import numpy as np
y = np.array([25, 10, 45, 20])
mylabels = ["w", "x", "y", "z"]
explodevalues = [0.1, 0.2, 0, 0]
colors = ['tab:blue', 'tab:green', 'tab:orange', 'tab:red']
plt.title("Zdroje alokované pro náhodný projekt")
plt.pie(y, labels = mylabels, colors=colors,explode = explodevalues, autopct="%1.1f%%", shadow = True)
plt.show()
Výstup:
Výstup koláčového grafu v Matplotlib
Výše uvedený graf zobrazuje koláčový graf se čtyřmi výsečemi označenými w, x, y a z. Hodnoty argumentu explode definují, jak daleko od středu koláče budou jednotlivé výseče umístěny.
Z grafu je vidět, že výseč x je nejdále od středu, protože její hodnota explode je větší než ostatní. Atribut shadow přidává do koláčového grafu stín, zatímco autopct nastavuje relativní procento k celkovému koláči, které každý řez představuje.
#3. Vytvoření histogramu
V histogramu používáme řadu intervalů pro znázornění rozsahu daných hodnot na ose x.
Osa y bude představovat frekvenci výskytu hodnot v daném intervalu.
Na rozdíl od ostatních grafů, vykreslování histogramu v Matplotlib vyžaduje několik předem definovaných kroků, které je třeba provést při jeho vytváření.
Mezi tyto kroky patří:
Funkce `hist()` má několik parametrů, včetně:
`x` – Představuje posloupnost polí.
`bins` – Volitelný parametr, který udává nepřekrývající se intervaly proměnných, které mohou obsahovat celá čísla nebo posloupnost řetězců.
`range` – Definuje horní a dolní rozsah přihrádek.
`align` – Řídí zarovnání histogramu (vlevo, vpravo nebo uprostřed).
`color` – Definuje barvu pruhů.
`rwidth` – Nastavuje relativní šířku sloupců v histogramu vzhledem k šířce přihrádky.
`log` – Parametr log definuje logaritmické měřítko na ose histogramu.
Následující příklad zobrazuje histogram s definovanými hodnotami.
from matplotlib import pyplot as plt
x = [22, 40, 87, 5, 43, 30, 56,73, 55, 54, 11, 20, 51, 5, 50, 60, 70, 80]
plt.hist(x)
plt.title('Příklad histogramu')
plt.xlabel('Osa x')
plt.ylabel('Frekvence')
plt.show()
Výstup:
Výstup grafu histogramu v Matplotlib
#4. Liniový graf v Matplotlib
Matplotlib používá svou subknihovnu `pyplot`, která obsahuje různé funkce pro usnadnění její implementace.
Pro vykreslování liniových grafů (a dalších typů liniových grafů, včetně zakřivených a více liniových grafů) se používá funkce `plot()`, která je součástí `pyplot`. Vytváření těchto různých typů grafů závisí na hodnotách, které předáte ose y.
Před vykreslováním grafů importujte knihovny `matplotlib.pyplot` a `Numpy`. Metoda `plot(x,y)` vytvoří liniový graf předáním náhodných hodnot argumentům x a y.
Volitelně lze předat i proměnnou `label`, která označí graf. Funkce `title` nastaví název grafu, zatímco funkce `xlabel` a `ylabel` pojmenovávají osy. Funkce `show()` poté zobrazí graf.
Například:
import matplotlib.pyplot as plt
import numpy as np
x = np.linspace(0, 5, 10)
y = 3*x + 2
plt.title('Příklad liniového grafu')
plt.xlabel('Osa x')
plt.ylabel('Osa y')
plt.plot(x, y)
plt.show()
Výsledek:
Výstup liniového grafu v Matplotlib
Atribut `np.linspace` vrací na grafu sadu rovnoměrně rozložených čísel v určitém intervalu pro hodnoty x. Vytvoří tak pole 10 hodnot v rozsahu 0 až 5. Hodnoty y jsou vytvořeny z rovnice, která používá odpovídající hodnoty x.
Vytváření bodových grafů
Matplotlib používá metodu `scatter()` pro vytvoření bodového grafu.
Tato metoda má následující parametry:
matplotlib.pyplot.scatter(x_axis_data, y_axis_data, s=None, c=None, marker=None, cmap=None, vmin=None, vmax=None, alpha=None, linewidths=None, edgecolors=None)
Parametry `x_axis_data` a `y_axis_data` musí být vyplněny, na rozdíl od ostatních parametrů, které jsou volitelné a mají výchozí hodnotu `None`. Argument `x_axis_data` definuje pole dat pro osu x, zatímco `y_axis_data` definuje pole dat pro osu y.
Příklad bodového grafu v Matplotlib:
import matplotlib.pyplot as plt
x =[15, 17, 18, 27, 22, 27, 32, 14, 11, 12, 29, 16]
y =[19, 16, 17, 18, 10, 26, 13, 27, 14, 18, 17, 35]
plt.title('Příklad bodového grafu')
plt.xlabel('Proměnná x')
plt.ylabel('Proměnná y')
plt.scatter(x, y, c ="green")
# Zobrazení grafu
plt.show()
Výstup:
Výstup bodového grafu v Matplotlib
Co je subplot() v Matplotlib
Funkce `subplot()` se používá k vykreslení více grafů na jednom obrázku Matplotlib. To umožňuje prohlížet a porovnávat více grafů na jednom obrázku.
Tato funkce vrací n-tici se třemi argumenty: řádky a sloupce jako první a druhý argument a index aktuálního grafu jako třetí argument.
Řádky a sloupce jasně definují rozložení v Matplotlib.
Například `plt.subplot(2, 1, 1)` vykreslí obrázek Matplotlib se dvěma řádky a jedním sloupcem a tento graf bude prvním grafem.
Na druhou stranu `plt.subplot(2, 1, 2)` zobrazí druhý graf se dvěma řádky a jedním sloupcem.
Vykreslením těchto dvou grafů dojde k jejich zobrazení nad sebou, jako v následujícím příkladu.
import matplotlib.pyplot as plt import numpy as np #graf 1: x = np.array([2, 4, 6, 8]) y = np.array([3, 6, 9, 12]) plt.subplot(2, 1, 1) plt.plot(x,y) #graf 2: x = np.array([3, 6, 9, 12]) y = np.array([1, 2, 3, 4]) plt.subplot(2, 1, 2) plt.plot(x,y) plt.show()
Výstup výše uvedeného příkladu bude vypadat jako na obrázku níže.

V dalším příkladu použijeme funkci `subplot` k vykreslení dvou grafů s jedním řádkem a dvěma sloupci. Tím se grafy zobrazí vedle sebe.
import matplotlib.pyplot as plt import numpy as np #graf 1: x = np.array([2, 4, 6, 8]) y = np.array([3, 6, 9, 12]) plt.subplot(1, 2, 1) plt.plot(x,y) #graf 2: x = np.array([3, 6, 9, 12]) y = np.array([1, 2, 3, 4]) plt.subplot(1, 2, 2) plt.plot(x,y) plt.show()
Výše uvedený příklad zobrazí následující výstup.

To bylo celkem zajímavé, nemyslíte?😃
Závěrem
Matplotlib je široce používaná knihovna pro vizualizaci dat v Pythonu. Její interaktivita a snadné použití, dokonce i pro začátečníky, z ní dělají skvělý nástroj pro vykreslování v Pythonu.
Tento článek se zabýval příklady různých grafů, které mohou být vytvořeny funkcemi dodávanými s Matplotlib, včetně koláčových, sloupcových, histogramů a bodových grafů.
Python nabízí samozřejmě i další knihovny, které mohou odborníci na strojové učení a datoví vědci využít k vytváření vizualizací.
Doporučujeme dále prozkoumat další grafy, které lze vytvořit s pomocí Matplotlib, a které funkce použít k jejich vytvoření.
Veselé vykreslování!📉📊