Úvodník

Na předchozí článek, v němž jsme se seznámili se základními typy grafů dostupných v knihovně Matplotlib, dnes navážeme. Ukážeme si totiž způsob vykreslení sloupcových grafů, oblíbených koláčových grafů, práci s histogramy i některé pokročilejší techniky použité při změnách stylů vykreslování.

Obsah

1. Integrovaná vývojová prostředí ve Fedoře: vykreslování grafů s využitím knihoven Numpy a matplotlib (2.část)

2. Propojení naměřených či vypočtených bodů úsečkami

3. Graf používající „schodky“

4. Jednoduchý sloupcový graf

5. Sloupcový graf se dvěma skupinami sloupců

6. Zobrazení histogramu

7. Koláčový graf

8. Změna stylu vykreslování koláčových grafů

9. Sloupcový graf se zobrazením odchylek (či chyb)

10. Pokročilejší nastavení způsobu vykreslení odchylek

11. Repositář s demonstračními příklady z předchozího článku

12. Repositář s demonstračními příklady z dnešního článku

13. Předchozí části seriálu

14. Odkazy na Internetu

1. Integrovaná vývojová prostředí ve Fedoře: vykreslování grafů s využitím knihoven Numpy a matplotlib (2.část)

Na předchozí článek, v němž jsme si popsali základní vlastnosti knihovny Matplotlib, zejména kombinaci možností této knihovny s knihovnou Numpy, dnes navážeme. Ukážeme si totiž, jakým způsobem je možné vykreslit další typy grafů, zejména sloupcové grafy s jedním polem vstupním dat, sloupcové grafy s větším množstvím polí se vstupními daty, sloupcové grafy se zobrazením odchylek (či chyb), histogramy a samozřejmě taktéž oblíbené, i když mnohdy spíše zneužívané koláčové grafy i jejich vylepšené varianty. Taktéž si ukážeme rozdíl mezi propojením naměřených či vypočtených hodnot úsečkami a grafem, na němž jsou jasně patrné „schodky“.

figure_11

Obrázek 1: V předchozím článku jsme si mj. ukázali i způsob tvorby polárních grafů.

2. Propojení naměřených či vypočtených bodů úsečkami

Minule jsme se seznámili se dvěma typy grafů. Jednalo se především o snad vůbec nejběžnější typ grafu, v němž byly naměřené či vypočtené hodnoty pospojovány úsečkami, takže se vlastně pro celý průběh použila jediná lomená čára (polyčára). Jednou z možných modifikací tohoto typu grafu bylo vyplnění plochy pod vykreslenou lomenou čárou. Druhým typem grafu byl polární graf, který se vykresluje naprosto stejným způsobem (lomená čára popř. vyplněné segmenty pod touto čárou), ovšem při výpočtu jednotlivých bodů se namísto kartézských souřadnic používají souřadnice polární.

figure_03

Obrázek 2: Graf, na němž jsou nakresleny průběhy dvou funkcí.

Pro připomenutí programové tvorby podobných grafů se podívejme na způsob vykreslení průběhu tří funkcí. Povšimněte si, že i když může mít rastrový či vektorový obrázek s grafem libovolnou velikost, je ve skutečnosti vypočteno pouze sto bodů každého průběhu a tyto body jsou následně pospojovány úsečkami. Vzhledem k tomu, že sto bodů je relativně vysoké číslo a samotné průběhy funkcí nevykazují velké změny (skoky apod.), vypadají všechny tři průběhy přirozeně, ovšem při snížení počtu bodů na pouhých deset se již ukazuje, jakým způsobem se graf vykresluje:

# Knihovny Numpy a matplotlib
#
# Dvanáctý demonstrační příklad:
# - vykreslení průběhu funkce sinc
# - při vykreslování se jednotlivé body spojí úsečkami

import numpy as np
import matplotlib.pyplot as plt

# hodnoty na x-ové ose
x = np.linspace(0.2, 2*np.pi, 100)

# hodnoty na y-ové ose
y = np.sin(5*x)/x
y2 = 1/x
y3 = -y2

# vykreslit průběh funkce
plt.plot(x, y2, color='red',  label='obalka sinc')
plt.plot(x, y3, color='red',  label='obalka sinc')
plt.plot(x, y,  color='blue', label='sinc(x)')

# povolení zobrazení mřížky
plt.grid(True)

# popis os
plt.xlabel("x")
plt.ylabel("sinc(x)")

# přidání legendy
plt.legend(loc="lower right")

# zobrazení grafu
plt.show()

figure_1

Obrázek 3: Vykreslení průběhu tří funkcí. Ve skutečnosti se však pro každou funkci vypočte pouze sto bodů, které jsou propojeny úsečkami. Díky velké hustotě bodů není (alespoň na těchto funkcích) náhrada hladkých křivek za lomenou čáru viditelné.

figure_1a

Obrázek 4: Pokud se počet vypočtených bodů sníží (zde na pouhých deset), je již jasně patrné, jakým způsobem byl graf vykreslen.

3. Graf používající „schodky“

V některých případech nám nemusí výše popsaný způsob vykreslení průběhů funkcí vyhovovat. Knihovna Matplotlib nám samozřejmě vychází vstříc, protože nabízí i další styly vykreslování, přičemž poměrně zajímavý a užitečný styl je založen na vykreslení „schodů“. Jedná se vlastně o přechodový typ grafu, v němž se sice stále vykresluje (spojitá) křivka, ovšem její tvar se již začíná podobat sloupcovému grafu (to je někdy poměrně důležité, protože můžeme naznačit například vzorkování apod.). Použití „schodků“ je vlastně velmi jednoduché, protože do příkazu pro vykreslení průběhu jedné funkce postačuje doplnit pojmenovaný parametr drawstyle a přiřadit mu hodnotu default:

figure_2

Obrázek 5: Zde se namísto lomené čáry použilo vykreslení průběhu funkcí se „schodky“.

Podívejme se na jednoduchý demonstrační příklad, v němž se v jednom grafu kombinují oba dva způsoby vykreslování – obálky funkce sinc jsou vykresleny lomenou čarou zatímco samotná funkce sinc je vykreslena s využitím „schodů“. Parametr drawstyle lze samozřejmě vynechat ve chvíli, kdy je mu přiřazena hodnota „default“:

# Knihovny Numpy a matplotlib
#
# Třináctý demonstrační příklad:
# - vykreslení průběhu funkce sinc
# - při vykreslování se použijí "schodky"

import numpy as np
import matplotlib.pyplot as plt

# hodnoty na x-ové ose
x = np.linspace(0.2, 2*np.pi, 100)

# hodnoty na y-ové ose
y = np.sin(5*x)/x
y2 = 1/x
y3 = -y2

# vykreslit průběh funkce
plt.plot(x, y2, color='red',  label='obalka sinc', drawstyle='default')
plt.plot(x, y3, color='red',  label='obalka sinc', drawstyle='default')
plt.plot(x, y,  color='blue', label='sinc(x)',     drawstyle='steps')

# povolení zobrazení mřížky
plt.grid(True)

# popis os
plt.xlabel("x")
plt.ylabel("sinc(x)")

# přidání legendy
plt.legend(loc="lower right")

# zobrazení grafu
plt.show()

4. Jednoduchý sloupcový graf

Nyní se již dostáváme k dalšímu populárnímu a velmi často používanému typu grafu. Jedná se o sloupcový graf, přičemž sloupce (odpovídající naměřeným nebo vypočteným hodnotám) mohou být buď vodorovné nebo – a to častěji – svislé. Pro tvorbu sloupcového grafu se používají funkce matplotlib.pyplot.bar() (sloupce jsou svislé) popř. matplotlib.pyplot.barh() (sloupce jsou vodorovné). První dva parametry těchto funkcí jsou povinné – v obou případech se jedná o pole, přičemž první pole obsahuje x-ové souřadnice sloupců (většinou se tedy jedná o pole vytvořené příkazem numpy.arange(počet_prvků)) a pole druhé obsahuje výšky sloupců. Třetí parametr je nepovinný, ovšem poměrně důležitý, protože obsahuje relativní šířku sloupců. Tu můžeme zadat buď skalární hodnotou (což je obvyklé řešení) nebo taktéž pomocí pole. To znamená, že je možné vykreslit graf se sloupci, které mají rozdílnou šířku.

figure_3

Obrázek 6: Sloupcový graf, v němž je šířka sloupců nastavena na hodnotu 1.0. Při této šířce se sloupce dotýkají.

Pro demonstrační příklad na vykreslení sloupcového grafu jsem vybral reálná data. Konkrétně se jedná o (v době vydaní článku již historické) ceny ropy uvedené v dolarech za barel. Při vykreslování byly funkci matplotlib.pyplot.bar() předány tři nepovinné parametry určující barvu výplně sloupců, barvu okrajů sloupců a popisek datové řady:

# Knihovny Numpy a matplotlib
#
# Čtrnáctý demonstrační příklad:
# - jednoduchý sloupcový graf

import numpy as np
import matplotlib.pyplot as plt

# historické ceny ropy
cena_ropy = [
46.68, 44.68, 46.90, 47.15, 44.59, 44.00, 44.63, 45.92, 44.15, 45.94,
46.05, 46.75, 46.25, 45.41, 49.20, 45.22, 42.56, 38.60, 39.31, 38.24,
40.45, 41.32, 40.80, 42.62, 41.87, 42.50, 42.23, 43.30, 43.08, 44.96,
43.87, 44.66, 45.15, 47.12, 48.52, 48.79, 47.98, 47.39, 48.14, 48.45]

# počet prvků
N = len(cena_ropy)

# indexy prvků
indexes = np.arange(N)

# šířka sloupců
width = 1.00

# sloupcový graf
plt.bar(indexes, cena_ropy, width, color='yellow', edgecolor='black', label='Cena ropy')

# povolení zobrazení mřížky
plt.grid(True)

# přidání legendy
plt.legend(loc="lower right")

# zobrazení grafu
plt.show()

figure_3a

Obrázek 7: Sloupcový graf, v němž je šířka sloupců nastavena na hodnotu 0.3.

5. Sloupcový graf se dvěma skupinami sloupců

Podívejme se, co se stane ve chvíli, kdy se pokusíme do jediného grafu vykreslit dvě datové řady. Předpokládejme, že hodnoty první datové řady jsou uloženy v poli vals1, hodnoty řady druhé pak v poli pojmenovaném vals2. Indexy, tj. vlastně x-ové souřadnice sloupců, jsou shodné:

# první pole hodnot
vals1 = [10, 15, 20, 12, 14, 8]

# druhé pole hodnot
vals2 = [19, 18,  6, 11,  6, 14]

# počet prvků
N = len(vals1)

# indexy prvků
indexes = np.arange(N)

# sloupcový graf se dvěma skupinami sloupců
plt.bar(indexes, vals1, width, color='gray', edgecolor='black', label='CPU#1')
# posunuté sloupce
plt.bar(indexes, vals2, width, color='red', edgecolor='black', label='CPU#2')

Výsledkem je graf s překrývajícími se sloupci:

figure_10

Obrázek 8: Sloupcový graf se dvěma datovými řadami ve chvíli, kdy jsou x-ové souřadnice sloupců shodné.

Graf z obrázku číslo 8 nám v mnoha případech pochopitelně nebude vyhovovat. Řešení je však jednoduché – postačuje posunout sloupce pro druhou (třetí, čtvrtou …) řadu doprava. To se provede jednoduše přičtením skalární hodnoty k poli indexes. Proč toto řešení bude funkční již víme, neboť jsme si ve článku o knihovně Numpy řekli, že pro operace s poli (vektory, maticemi) byl přetížen operátor +, který zadanou skalární hodnotu přičte ke všem prvkům.

figure_4

Obrázek 9: Sloupcový graf se dvěma datovými řadami ve chvíli, kdy jsou x-ové souřadnice druhé datové řady posunuty.

Úplný zdrojový kód demonstračního příkladu vypadá následovně:

# Knihovny Numpy a matplotlib
#
# Patnáctý demonstrační příklad:
# - sloupcový graf se dvěma skupinami sloupců

import numpy as np
import matplotlib.pyplot as plt

# první pole hodnot
vals1 = [10, 15, 20, 12, 14, 8]

# druhé pole hodnot
vals2 = [19, 18,  6, 11,  6, 14]

# počet prvků
N = len(vals1)

# indexy prvků
indexes = np.arange(N)

# šířka sloupců
width = 0.30

# sloupcový graf se dvěma skupinami sloupců
plt.bar(indexes, vals1, width, color='gray', edgecolor='black', label='CPU#1')
# posunuté sloupce
plt.bar(indexes+width, vals2, width, color='red', edgecolor='black', label='CPU#2')

# povolení zobrazení mřížky
plt.grid(True)

# přidání legendy
plt.legend(loc="lower right")

# zobrazení grafu
plt.show()

6. Zobrazení histogramu

Dalším typem grafu, který je možné při použití knihovny Matplotlib použít, je histogram. Ten se vykresluje funkcí pojmenovanou logicky matplotlib.pyplot.hist(). Povinným parametrem jsou podle očekávání data, která se mají do histogramu vykreslit, ovšem funkce matplotlib.pyplot.hist() podporuje i další nepovinné parametry, zejména parametr normed řídicí normalizaci histogramu. Dalším mnohdy důležitým nepovinným parametrem je bins, jehož hodnotou se řídí šířka intervalů (tříd), tj. nepřímo počet sloupců v histogramu. Podívejme se na několik ukázek, z nichž bude použití nepovinného parametru bins patrné:

figure_5

Obrázek 10: Histogram náhodných hodnot s normálním rozložením: parametr bins je nastaven na hodnotu 30.

figure_11

Obrázek 11: Histogram náhodných hodnot s normálním rozložením: parametr bins je nastaven na hodnotu 10.

figure_12

Obrázek 12: Histogram náhodných hodnot s normálním rozložením: parametr bins je nastaven na hodnotu 100.

Tyto histogramy byly vytvořeny následujícím programem:

# Knihovny Numpy a matplotlib
#
# Šestnáctý demonstrační příklad:
# - jednoduchý histogram

import numpy as np
import matplotlib.pyplot as plt

# náhodné hodnoty
y = np.random.normal(0, 0.1, 10000)

plt.hist(y, bins=30, range=None, normed=True)

# zobrazení grafu
plt.show()

7. Koláčový graf

Posledním typem grafu, s nímž se v dnešním článku seznámíme, jsou takzvané koláčové grafy, které již každý čtenář zcela jistě viděl. Tyto typy grafů se používají v případě, že nás nezajímají absolutní hodnoty, ale hodnoty relativní, konkrétně vzájemné poměry. Nejprve se podívejme, jak může koláčový graf vykreslený knihovnou Matplotlib vypadat. V grafu je zobrazeno zastoupení skriptovacích jazyků, přičemž nás nyní nezajímá, v kolika projektech se jednotlivé jazyky použily, ale jaké jsou poměry tohoto zastoupení:

figure_6

Obrázek 13: Koláčový graf zobrazující poměry mezi třemi hodnotami (zde konkrétně zastoupení skriptovacích jazyků).

Při vykreslení koláčového grafu můžeme použít přímo funkci matplotlib.pyplot.pie(), popř. lze použít podobný postup, jakým jsme minule vykreslili polární graf. Důležitý je především fakt, že koláčovému grafu můžeme předat pole s libovolnými hodnotami, nemusí se tedy jednat ani o procentuální poměry (se součtem 100%) ani o relativní hodnoty (se součtem 1.00). Knihovna Matplotlib si z předaných hodnot poměry vypočte automaticky. Dále si povšimněte použití nepovinného pojmenovaného parametru labels (s popisem jednotlivých výřezů) a parametru shadow, kterým se povoluje či zakazuje zobrazení 3D stínu:

# Knihovny Numpy a matplotlib
#
# Sedmnáctý demonstrační příklad:
# - koláčový graf

from matplotlib import pyplot as plt
from matplotlib import font_manager as fm

# make a square figure and axes
fig = plt.figure(1, figsize=(6,6), dpi=50)
ax = fig.add_axes([0.16, 0.16, 0.68, 0.68])

plt.title("Scripting languages")
ax.title.set_fontsize(30)

# popisky jednotlivých výřezů
labels = ['Perl', 'Python', 'Ruby']

# šířky jednotlivých výřezů
fracs = [90, 150, 70]

# vytvoření koláčového grafu
ax.pie(fracs, labels=labels, autopct='%1.1f%%', shadow=True)

# zobrazení grafu
plt.show()

8. Změna stylu vykreslování koláčových grafů

Koláčové grafy je samozřejmě možné upravovat. V této kapitole si ukážeme, jak se v grafu změní barvy jednotlivých výřezů a jak se jeden (nebo v případě potřeby i větší množství) výřezů „vysune“ od středové osy. Výsledkem bude následující obrázek:

figure_7

Obrázek 14: Změna stylu vykreslení koláčových grafů.

Změnu velikosti nadpisu zařizuje metoda set_fontsize(), změnu stylu písma pak kombinace set_size() společně s nastavením vlastností (properties) písma. Pravděpodobně nejdůležitější je však nepovinný parametr explode funkce matplotlib.pyplot.pie(), kterému se předá pole s relativními hodnotami určujícími míru vysunutí jednotlivých řezů:

# Knihovny Numpy a matplotlib
#
# Osmnáctý demonstrační příklad:
# - změna stylu koláčových grafů

from matplotlib import pyplot as plt
from matplotlib import font_manager as fm

# make a square figure and axes
fig = plt.figure(1, figsize=(6,6), dpi=50)
ax = fig.add_axes([0.16, 0.16, 0.68, 0.68])

plt.title("Scripting languages")
ax.title.set_fontsize(30)

# popisky jednotlivých výřezů
labels = ['Perl', 'Python', 'Ruby']

# šířky jednotlivých výřezů
fracs = [90, 150, 70]

# vytáhnutí výřezů
explode=(0.0, 0.0, 0.15)

# barvy
colors = ('yellow', '#60ff60', 'red')

# vytvoření koláčového grafu
patches, texts, autotexts = ax.pie(fracs, explode=explode, colors=colors, labels=labels, autopct='%1.1f%%', shadow=True)

# změna stylu písma
proptease = fm.FontProperties()
proptease.set_size('xx-large')
plt.setp(autotexts, fontproperties=proptease)
plt.setp(texts, fontproperties=proptease)

# zobrazení grafu
plt.show()

9. Sloupcový graf se zobrazením odchylek (či chyb)

Vraťme se ještě na chvíli ke sloupcovým grafům. V některých případech je nutné ke sloupcům přidat i povolené odchylky či chyby. I to je samozřejmě možné, a to díky existenci nepovinného pojmenovaného parametru yerr, kterému se předá buď skalární hodnota nebo pole o stejné délce, jakou má samotné vstupní pole hodnot. Podívejme se na způsob úpravy sloupcového grafu se dvěma datovými řadami o zobrazení odchylek. Tyto odchylky jsou uloženy v polích delta1 a delta2:

# Knihovny Numpy a matplotlib
#
# Devatenáctý demonstrační příklad:
# - sloupcový graf se dvěma skupinami sloupců
#   a se zobrazením odchylek

import numpy as np
import matplotlib.pyplot as plt

# první pole hodnot a pole odchylek
vals1 = [10, 15, 20, 12, 14, 8]
delta1 = [1, 2, 3, 4, 5, 0]

# druhé pole hodnot a pole odchylek
vals2 = [19, 18,  6, 11,  6, 14]
delta2 = [4, 2, 3, 2, 2, 4]

# počet prvků
N = len(vals1)

# indexy prvků
indexes = np.arange(N)

# šířka sloupců
width = 0.30

# sloupcový graf se dvěma skupinami sloupců
plt.bar(indexes, vals1, width, color='gray', edgecolor='black', label='CPU#1',
        yerr=delta1)

# posunuté sloupce
plt.bar(indexes+width, vals2, width, color='red', edgecolor='black', label='CPU#2',
        yerr=delta2)

# povolení zobrazení mřížky
plt.grid(True)

# přidání legendy
plt.legend(loc="lower right")

# zobrazení grafu
plt.show()

figure_8

Obrázek 15: Sloupcový graf se zobrazením odchylek.

10. Pokročilejší nastavení způsobu vykreslení odchylek

Pokud budeme potřebovat změnit styl vykreslení odchylek/chyb, záhy zjistíme, že funkce matplotlib.pyplot.pie() nemá žádné povinné ani nepovinné parametry, které by bylo pro tento účel možné přímo použít! Ve skutečnosti se totiž všechny podobné parametry ukládají do slovníku (dictionary) předaného v pojmenovaném parametru error_kw. Podívejme se tedy, jak se změní barva a šířka úsečky vykreslených odchylek (přímo při vytváření slovníku ho i inicializujeme):

# Knihovny Numpy a matplotlib
#
# Dvacátý demonstrační příklad:
# - sloupcový graf se dvěma skupinami sloupců
#   a se zobrazením odchylek

import numpy as np
import matplotlib.pyplot as plt

# první pole hodnot a pole odchylek
vals1 = [10, 15, 20, 12, 14, 8]
delta1 = [1, 2, 3, 4, 5, 0]

# druhé pole hodnot a pole odchylek
vals2 = [19, 18,  6, 11,  6, 14]
delta2 = [4, 2, 3, 2, 2, 4]

# počet prvků
N = len(vals1)

# indexy prvků
indexes = np.arange(N)

# šířka sloupců
width = 0.30

# sloupcový graf se dvěma skupinami sloupců
plt.bar(indexes, vals1, width, color='gray', edgecolor='black', label='CPU#1',
        yerr=delta1, error_kw=dict(elinewidth=2,ecolor='red'))

# posunuté sloupce
plt.bar(indexes+width, vals2, width, color='red', edgecolor='black', label='CPU#2',
        yerr=delta2, error_kw=dict(elinewidth=2,ecolor='black'))

# povolení zobrazení mřížky
plt.grid(True)

# přidání legendy
plt.legend(loc="lower right")

# zobrazení grafu
plt.show()

figure_9

Obrázek 16: Změna stylu vykreslování odchylek (chyb).

11. Repositář s demonstračními příklady z předchozího článku

Všechny demonstrační příklady, s nimiž jsme se seznámili v předchozím i v dnešním článku, byly uloženy do Git repositáře umístěného na GitHubu (https://github.com/tisnik/presentations). Poslední verze zdrojových kódů naleznete pod odkazy uvedenými v tabulce pod tímto odstavcem. Začneme nejprve příklady, s nimiž jsme se seznámili již minule:

# Příklad Popis Zdrojový kód
1 example01.py vykreslení průběhu funkce sin https://github.com/tisnik/presentations/blob/master/matplotlib/example01.py
2 example02.py uložení grafu do různých typů souborů https://github.com/tisnik/presentations/blob/master/matplotlib/example02.py
3 example03.py vykreslení průběhů funkcí sin a cos do jediného grafu https://github.com/tisnik/presentations/blob/master/matplotlib/example03.py
4 example04.py změna stylu vykreslování průběhů funkcí https://github.com/tisnik/presentations/blob/master/matplotlib/example04.py
5 example05.py vykreslení průběhů funkcí sin a sinc do jediného grafu, vyplnění plochy pod průběhy https://github.com/tisnik/presentations/blob/master/matplotlib/example05.py
6 example06.py kombinace různých stylů vykreslení https://github.com/tisnik/presentations/blob/master/matplotlib/example06.py
7 example07.py nastavení mřížky a rozsahů na obou osách https://github.com/tisnik/presentations/blob/master/matplotlib/example07.py
8 example08.py přidání popisku přímo do grafu https://github.com/tisnik/presentations/blob/master/matplotlib/example08.py
9 example09.py základní polární graf https://github.com/tisnik/presentations/blob/master/matplotlib/example09.py
10 example10.py vykreslení průběhů několika funkcí do polárního grafu https://github.com/tisnik/presentations/blob/master/matplotlib/example10.py
11 example11.py vykreslení průběhů několika funkcí do polárního grafu https://github.com/tisnik/presentations/blob/master/matplotlib/example11.py

12. Repositář s demonstračními příklady z dnešního článku

Nyní nám pouze zbývá uvést odkazy na příklady popsané v dnešním článku:

# Příklad Popis Zdrojový kód
1 example12.py vykreslení grafu, kde jsou jednotlivé body spojeny úsečkami https://github.com/tisnik/presentations/blob/master/matplotlib/example12.py
2 example13.py vykreslení grafu se „schodky“ https://github.com/tisnik/presentations/blob/master/matplotlib/example13.py
3 example14.py jednoduchý sloupcový graf https://github.com/tisnik/presentations/blob/master/matplotlib/example14.py
4 example15.py sloupcový graf se dvěma skupinami sloupců https://github.com/tisnik/presentations/blob/master/matplotlib/example15.py
5 example16.py jednoduchý histogram https://github.com/tisnik/presentations/blob/master/matplotlib/example16.py
6 example17.py koláčový graf https://github.com/tisnik/presentations/blob/master/matplotlib/example17.py
7 example18.py změna stylu koláčových grafů https://github.com/tisnik/presentations/blob/master/matplotlib/example18.py
8 example19.py sloupcový graf se dvěma skupinami sloupců a se zobrazením odchylek https://github.com/tisnik/presentations/blob/master/matplotlib/example19.py
9 example20.py úprava stylu předchozího typu grafu https://github.com/tisnik/presentations/blob/master/matplotlib/example20.py

13. Předchozí části seriálu

  1. Vývojová prostředí ve Fedoře (1. díl)
    http://mojefedora.cz/vyvojova-prostredi-ve-fedore-1-dil/
  2. Vývojová prostředí ve Fedoře (2. díl)
    http://mojefedora.cz/vyvojova-prostredi-ve-fedore-2-dil/
  3. Vývojová prostředí ve Fedoře (3. díl)
    http://mojefedora.cz/vyvojova-prostredi-ve-fedore-3-dil/
  4. Vývojová prostředí ve Fedoře (4. díl)
    http://mojefedora.cz/vyvojova-prostredi-ve-fedore-4-dil/
  5. Integrovaná vývojová prostředí ve Fedoře: PyDev
    http://mojefedora.cz/integrovana-vyvojova-prostredi-ve-fedore-pydev/
  6. Integrovaná vývojová prostředí ve Fedoře: PyDev (2.část)
    http://mojefedora.cz/integrovana-vyvojova-prostredi-ve-fedore-pydev-2-cast/
  7. Integrovaná vývojová prostředí ve Fedoře: IPython a IPython Notebook
    http://mojefedora.cz/integrovana-vyvojova-prostredi-ve-fedore-ipython-a-ipython-notebook/
  8. Integrovaná vývojová prostředí ve Fedoře: praktické použití IPython Notebooku a knihovny Numpy
    http://mojefedora.cz/integrovana-vyvojova-prostredi-ve-fedore-prakticke-pouziti-ipython-notebooku-a-knihovny-numpy/
  9. Integrovaná vývojová prostředí ve Fedoře: praktické použití IPython Notebooku a knihovny Numpy (2.část)
    http://mojefedora.cz/integrovana-vyvojova-prostredi-ve-fedore-prakticke-pouziti-ipython-notebooku-a-knihovny-numpy-2-cast/
  10. Integrovaná vývojová prostředí ve Fedoře: vykreslování grafů s využitím knihoven Numpy a matplotlib
    http://mojefedora.cz/integrovana-vyvojova-prostredi-ve-fedore-vykreslovani-grafu-s-vyuzitim-knihoven-numpy-a-matplotlib/

14. Odkazy na Internetu

  1. Graphics with Matplotlib
    http://kestrel.nmt.edu/~raymond/software/python_notes/paper004.html
  2. Systémy lineárních rovnic
    http://www.matematika.cz/systemy-linearnich-rovnic
  3. IPython homepage
    http://ipython.org/
  4. Dokumentace k IPythonu
    http://ipython.org/documentation.html#
  5. IPython Tutorial
    http://ipython.readthedocs.org/en/stable/interactive/tutorial.html
  6. NumPy Home Page
    http://www.numpy.org/
  7. NumPy v1.10 Manual
    http://docs.scipy.org/doc/numpy/index.html
  8. NumPy (Wikipedia)
    https://en.wikipedia.org/wiki/NumPy
  9. Matplotlib Home Page
    http://matplotlib.org/
  10. matplotlib (Wikipedia)
    https://en.wikipedia.org/wiki/Matplotlib
  11. The cell magics in IPython
    http://nbviewer.jupyter.org/github/ipython/ipython/blob/1.x/examples/notebooks/Cell%20Magics.ipynb
  12. 0MQ Home Page
    http://zeromq.org/
  13. Is IPython Notebook ever used as an IDE, or merely for presentations?
    https://www.reddit.com/r/IPython/comments/1uk7hp/is_ipython_notebook_ever_used_as_an_ide_or_merely/
  14. The IDE as a Bad Programming Language Enabler
    https://dzone.com/articles/ide-bad-programming-language
  15. Enhanced Interactive Python with IPython
    http://www.onlamp.com/pub/a/python/2005/01/27/ipython.html
  16. Direct mode
    https://en.wikipedia.org/wiki/Direct_mode
  17. Seznámení s Python IDE Spyder (článek vyšel zde na mojefedora.cz)
    http://mojefedora.cz/seznameni-s-python-ide-spyder/
  18. Stránka s popisem různých IDE pro Python
    http://quintagroup.com/cms/python/ide
  19. Eclipse (stránka o frameworku na Fedoraproject.org)
    https://fedoraproject.org/wiki/Eclipse
  20. PyDev (hlavní stránka)
    http://pydev.sourceforge.net/index.html
  21. PyDev (download, v podstatě není zapotřebí)
    http://pydev.sourceforge.net/download.html
  22. PyDev (stránka s metainformacemi o PyDev pluginu, použita v Eclipse)
    http://www.pydev.org/updates/
  23. PyDev (stránka s pluginem, použita v Eclipse)
    https://dl.bintray.com/fabioz/pydev/4.5.4/
  24. Certifikát, který lze do Eclipse doinstalovat
    http://www.pydev.org/pydev_certificate.cer
  25. PyDev FAQ
    http://pydev.sourceforge.net/faq.html
  26. PyDev (Wikipedia)
    https://en.wikipedia.org/wiki/PyDev
  27. Python (oficiální stránky projektu)
    https://www.python.org/
  28. Jython
    http://www.jython.org/
  29. IronPython
    http://ironpython.net/
  30. Python 3.5.1 documentation
    https://docs.python.org/3/
  31. PyDev: Unittest integration
    http://mojefedora.cz/integrovana-vyvojova-prostredi-ve-fedore-pydev/
  32. Continuous unit testing with Pydev (Python and Eclipse)
    http://stackoverflow.com/questions/1015581/continuous-unit-testing-with-pydev-python-and-eclipse
  33. Test-driven development
    https://en.wikipedia.org/wiki/Test-driven_development