Ukázky použití knihovny Matplotlib při tvorbě různých typů grafů.
Nejprve je nutné naimportovat všechny potřebné funkce a konstanty z balíčku matplotlib
Používají se následující varianty importu
import matplotlib
import matplotlib as plt
from matplotlib import *
from matplotlib import array, linspace
Pro potřeby prezentace naimportujeme všechny funkce a konstanty z knihovny matplotlib.pyplot
import matplotlib.pyplot as pltTaktéž budeme potřebovat některé funkce z knihovny numpy
import numpy as npZákladní kontrola, jestli se import podařil
import sys
if "matplotlib" not in sys.modules:
raise Exception("Modul matplotlib nebyl naimportován")
if "numpy" not in sys.modules:
raise Exception("Modul numpy nebyl naimportován")hodnoty na x-ové ose
x = np.linspace(0, 2*np.pi, 100)hodnoty na y-ové ose
y = np.sin(x)vykreslit průběh funkce
plt.plot(x, y)popis os
plt.xlabel("x")
plt.ylabel("sin(x)")zobrazení grafu
plt.show()plt.savefig("sinus.png")
plt.savefig("sinus.pdf")
plt.savefig("sinus.eps")
plt.savefig("sinus.ps")
plt.savefig("sinus.svg")hodnoty na x-ové ose
x = np.linspace(0, 2*np.pi, 100)hodnoty na y-ové ose: první funkce
y1 = np.sin(x)hodnoty na y-ové ose: druhá funkce
y2 = np.cos(x)vykreslit průběh obou funkcí
plt.plot(x, y1, x, y2)popis os
plt.xlabel("x")
plt.ylabel("sin(x) a cos(x)")zobrazení grafu
plt.show()hodnoty na x-ové ose
x = np.linspace(0.01, 2*np.pi, 100)hodnoty na y-ové ose: první funkce
y1 = np.sin(x)hodnoty na y-ové ose: druhá funkce
y2 = np.cos(x)hodnoty na y-ové ose: třetí funkce
y3 = np.sin(x)/xvykreslit průběh všech tří funkcí se změnou stylu vykreslování
plt.plot(x, y1, "b-", label="sin")
plt.plot(x, y2, "r.", label="cos")
plt.plot(x, y3, "g--", label="sinc")přidání legendy
plt.legend(loc="lower left")popis os
plt.xlabel("x")
plt.ylabel("sin(x), cos(x) a sinc(x)")zobrazení grafu
plt.show()hodnoty na x-ové ose
x = np.linspace(0, 2*np.pi, 100)hodnoty na y-ové ose: první funkce
y1 = np.sin(x)hodnoty na y-ové ose: druhá funkce
y2 = np.sin(3*x)/(x+1)vykreslit průběh obou funkcí se změnou stylu vykreslování
plt.fill(x, y1, "red", x, y2, "yellow", alpha=0.3)popis os
plt.xlabel("x")
plt.ylabel("sin(x) a sinc(3x)")zobrazení grafu
plt.show()hodnoty na x-ové ose
x = np.linspace(0.001, 2*np.pi, 100)hodnoty na y-ové ose: první funkce
y1 = np.sin(5*x)hodnoty na y-ové ose: druhá funkce
y2 = np.sin(5*x)/(x+1/2)hodnoty na y-ové ose: třetí čtvrtá funkce
y3 = 1/(x+1/2)
y4 = -y3vykreslit průběh obou funkcí se změnou stylu vykreslování
plt.fill(x, y1, "yellow", alpha=0.3, label="sin x")
plt.fill(x, y2, "r.", alpha=1.0, label="sinc 5x")
plt.plot(x, y3, "g--", label="obalka sinc")
plt.plot(x, y4, "g--", label="obalka sinc")přidání legendy
plt.legend(loc="upper right")popis os
plt.xlabel("x")
plt.ylabel("sin(x) a sinc(3x)")zobrazení grafu
plt.show()hodnoty na x-ové ose
x = np.linspace(0, 2*np.pi, 100)hodnoty na y-ové ose: první funkce
y1 = np.sin(x)hodnoty na y-ové ose: druhá funkce
y2 = np.cos(x)vykreslit průběh obou funkcí se změnou stylu vykreslování
plt.plot(x, y1, "b-", label="sin")
plt.plot(x, y2, "r-", label="cos")přidání legendy
plt.legend(loc="lower left")nastavení rozsahů na obou osách
plt.axis([-1, 8, -1.5, 1.5])povolení zobrazení mřížky
plt.grid(True)popis os
plt.xlabel("x")
plt.ylabel("sin(x) a cos(x)")zobrazení grafu
plt.show()hodnoty na x-ové ose
x = np.linspace(0, 2*np.pi, 100)hodnoty na y-ové ose: první funkce
y1 = np.sin(x)hodnoty na y-ové ose: druhá funkce
y2 = np.cos(x)vykreslit průběh obou funkcí se změnou stylu vykreslování
plt.plot(x, y1, "b-", label="sin")
plt.plot(x, y2, "r-", label="cos")přidání legendy
plt.legend(loc="lower left")nastavení rozsahů na obou osách
plt.axis([-1, 8, -1.5, 1.5])povolení zobrazení mřížky
plt.grid(True)popis os
plt.xlabel("x")
plt.ylabel("sin(x) a cos(x)")vložit první popisek do grafu
plt.annotate("maximální hodnota sin(x)",
xy=(np.pi/2, 1.0),
xytext=(1, 1.3),
arrowprops=dict(arrowstyle="->"))vložit druhý popisek do grafu
plt.annotate("minimální hodnota cos(x)",
xy=(np.pi, -1.0),
xytext=(2, -1.3),
arrowprops=dict(arrowstyle="->"))zobrazení grafu
plt.show()úhel v polárním grafu
theta = np.linspace(0.01, 2*np.pi, 150)vzdálenost od středu
radius = np.log(theta)
ax = plt.subplot(111, projection="polar")vykreslit průběh funkce v polárním grafu
ax.plot(theta, radius)zobrazení grafu
plt.show()úhel v polárním grafu
theta = np.linspace(0.01, 2*np.pi, 150)první funkce: vzdálenost od středu
radius1 = thetadruhá funkce: vzdálenost od středu
radius2 = 2*np.abs(theta-np.pi)třetí funkce: vzdálenost od středu
radius3 = 2*np.log(theta)
ax = plt.subplot(111, projection="polar")vykreslit průběh první funkce v polárním grafu
ax.plot(theta, radius1, "r.", label="f1")vykreslit průběh druhé funkce v polárním grafu
ax.plot(theta, radius2, "g", label="f2")vykreslit průběh třetí funkce v polárním grafu
ax.plot(theta, radius3, "b--", label="f3")přidání legendy
plt.legend(loc="lower left")zobrazení grafu
plt.show()úhel v polárním grafu
theta = np.linspace(0.01, 4*np.pi, 150)první funkce: vzdálenost od středu
radius1 = thetadruhá funkce: vzdálenost od středu
radius2 = 3*np.abs(theta-2*np.pi)
ax = plt.subplot(111, projection="polar")vykreslit průběh první funkce v polárním grafu
ax.plot(theta, radius2, "b", label="f1")vykreslit průběh druhé funkce v polárním grafu
ax.fill(theta, radius1, "yellow", alpha=0.3, label="f1")přidání legendy
plt.legend(loc="lower left")zobrazení grafu
plt.show()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 = -y2vykreslit 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()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 = -y2vykreslit 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()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.00sloupcový 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()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.30sloupcový 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()náhodné hodnoty
y = np.random.normal(0, 0.1, 10000)
plt.hist(y, bins=30, range=None, density=True)zobrazení grafu
plt.show()musíme naimportovat ještě jeden balíček
from matplotlib import font_manager as fm # noqa: E402make 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()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()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.30sloupcový 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()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.30sloupcový 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()import dvou dalších potřebných knihoven
import matplotlib.cm as cm # noqa: E402
import matplotlib.mlab as mlab # noqa: E402
delta = 0.1průběh nezávislé proměnné x
x = np.arange(-10.0, 10.0, delta)průběh nezávislé proměnné y
y = np.arange(-10.0, 10.0, delta)vytvoření dvou polí se souřadnicemi [x,y]
X, Y = np.meshgrid(x, y)vzdálenost od bodu [0,0]
R1 = np.sqrt(X*X+Y*Y)vzdálenost od bodu [3,3]
R2 = np.sqrt((X-3)*(X-3)+(Y-3)*(Y-3))výpočet funkce, kterou použijeme při vykreslování grafu
Z = np.sin(R1)-np.cos(R2)povolení zobrazení mřížky
plt.grid(True)vytvoření grafu s konturami funkce z=f(x,y)
plt.contour(X, Y, Z)zobrazení grafu
plt.show()hustota mřížky
delta = 0.1průběh nezávislé proměnné x
x = np.arange(-10.0, 10.0, delta)průběh nezávislé proměnné y
y = np.arange(-10.0, 10.0, delta)vytvoření dvou polí se souřadnicemi [x,y]
X, Y = np.meshgrid(x, y)vzdálenost od bodu [0,0]
R1 = np.sqrt(X*X+Y*Y)vzdálenost od bodu [3,3]
R2 = np.sqrt((X-3)*(X-3)+(Y-3)*(Y-3))výpočet funkce, kterou použijeme při vykreslování grafu
Z = np.sin(R1)-np.cos(R2)povolení zobrazení mřížky
plt.grid(True)vytvoření grafu s konturami funkce z=f(x,y)
CS = plt.contour(X, Y, Z)popisky “vrstevnic”
plt.clabel(CS, inline=1, fontsize=10)zobrazení grafu
plt.show()hustota mřížky
delta = 0.1průběh nezávislé proměnné x
x = np.arange(-10.0, 10.0, delta)průběh nezávislé proměnné y
y = np.arange(-10.0, 10.0, delta)vytvoření dvou polí se souřadnicemi [x,y]
X, Y = np.meshgrid(x, y)vzdálenost od bodu [0,0]
R1 = np.sqrt(X*X+Y*Y)vzdálenost od bodu [3,3]
R2 = np.sqrt((X-3)*(X-3)+(Y-3)*(Y-3))výpočet funkce, kterou použijeme při vykreslování grafu
Z = np.sin(R1)-np.cos(R2)povolení zobrazení mřížky
plt.grid(True)vytvoření grafu s konturami funkce z=f(x,y)
CS = plt.contour(X, Y, Z)přidání legendy (colorbar)
CB = plt.colorbar(CS, shrink=0.7, extend='both')popisky “vrstevnic”
plt.clabel(CS, inline=1, fontsize=10)zobrazení grafu
plt.show()