Biblioteka matplotlib - tworzenie własnych wykresów 2W i 3W

Autor podstrony: Krzysztof Zajączkowski

Stronę tą wyświetlono już: 31217 razy

Instalacja tej biblioteki jest konieczna zarówno pod Linuksem, jak i pod Windowsem. Skorzystać należy oczywiście z pip wpisując w konsoli następujące polecenie:

pip install matplotlib

Podczas instalacji ściągnięte i zainstalowane zostaną wszystkie inne niezbędne biblioteki, oto widok przebiegu całego procesu instalacji pod Windows-em:

pip install matplotlib
Collecting matplotlib
  Downloading matplotlib-1.5.1-cp35-none-win_amd64.whl (6.5MB)
   100% |################################| 6.5MB 31kB/s
Collecting pytz (from matplotlib)
  Downloading pytz-2016.3-py2.py3-none-any.whl (479kB)
   100% |################################| 481kB 115kB/s
Collecting numpy>=1.6 (from matplotlib)
  Downloading numpy-1.11.0-cp35-none-win_amd64.whl (7.6MB)
   100% |################################| 7.6MB 27kB/s
Collecting pyparsing!=2.0.4,>=1.5.6 (from matplotlib)
  Downloading pyparsing-2.1.1-py2.py3-none-any.whl
Collecting python-dateutil (from matplotlib)
  Downloading python_dateutil-2.5.2-py2.py3-none-any.whl (201kB)
   100% |################################| 204kB 96kB/s
Collecting cycler (from matplotlib)
  Downloading cycler-0.10.0-py2.py3-none-any.whl
Collecting six>=1.5 (from python-dateutil->matplotlib)
  Downloading six-1.10.0-py2.py3-none-any.whl
Installing collected packages: pytz, numpy, pyparsing, six, python-dateutil, cycler, matplotlib
Successfully installed cycler-0.10.0 matplotlib-1.5.1 numpy-1.11.0 pyparsing-2.1.1 python-dateutil-2.5.2 pytz-2016.3 six-1.10.0

Skoro zainstalowane zostało już wszystko co do szczęścia jest potrzebne, warto wspomnieć o stronie domowej tej biblioteki, która mieści się pod adresem matplotlib.org. Na stronie owej można znaleźć wiele zacnych przykładów użycia tejże biblioteki, ja jedynie pokażę tutaj podstawy podstaw, zanim jednak zaimportujmy sobie dwa moduły:

import matplotlib.pyplot as plt import numpy as np

Pierwszy moduł atplot;ib.pyplot odpowiedzialny jest za tworzenie wykresów, natomiast drugi moduł numpy umożliwia generowanie danych do wykresu.

Generowanie wykresów 2W

Aby utworzyć prosty wykres, trzeba najpierw wygenerować listę punktów x oraz wyliczyć y=f(x). Oto przykładowy kod:

x = np.linspace(0, np.pi * 2, 100) y = np.sin(x)

Teraz można przystąpić do tworzenia wykresu:

plt.plot(x, y) plt.grid(True) plt.xlim(0, np.pi * 2) plt.xlabel("x") plt.ylabel("f(x) = sin(x)") plt.title("Wykres funkcji f(x) = sin(x)") plt.savefig("fig1.jpg", dpi = 72) plt.show()

Funkcja plot generuje wykres z podanych na wejście danych. Z kolei metoda grid włącza wyświetlania na wykresie siatki. Metoda xlim ustawia przedział danych wykresu dla osi x. xlabel wprowadza opis osi x, natomiast ylabel opis osi y. Tytuł wykresu ustawia się za pomocą metody title. Z kolein metoda savefig zapisuje wykres do pliku a ostatnia metoda show wyświetla wykres.

Przykład wykresu wygenerowanego w Pythonie za pomocą biblioteki matplotlib
Rys. 1
Przykład wykresu wygenerowanego w Pythonie za pomocą biblioteki matplotlib

Na jednym wykresie można oczywiście wyświetlić przebieg dwóch funkcji, oto przykład:

x = np.linspace(0, np.pi * 2, 100) plt.plot(x, np.sin(x), 'r', x, np.cos(x), 'b') plt.xlim(0, np.pi * 2) plt.grid(True) plt.savefig("fig2.jpg", dpi = 72) plt.show()

Wynik działania powyższego kodu pokazany został na poniższej ilustracji.

Przykład wygenerowanego wykresu z dwiema funkcjami.
Rys. 2
Przykład wygenerowanego wykresu z dwiema funkcjami

Istnieje też możliwość umieszczenia w jednym pliku lub oknie trzech różnych wykresów w następujący sposób:

x = np.linspace(0, np.pi * 2, 100) plt.subplot(3,1,1) plt.plot(x, np.sin(x), 'r') plt.grid(True) plt.xlim(0, np.pi * 2) plt.subplot(3,1,2) plt.plot(x, np.cos(x), 'g') plt.grid(True) plt.xlim(0, np.pi * 2) plt.subplot(3,1,3) plt.plot(x, np.sin(x), 'r', x, np.cos(x), 'g') plt.grid(True) plt.xlim(0, np.pi * 2) plt.savefig("fig3.jpg", dpi = 72) plt.show()

Wynikiem działania powyższego kodu będzie poniższy wykres.

Trzy wykresy na jednej ilustracji
Rys. 3
Przykład wygenerowania trzech wykresów na jednym rysunku.

Na tym zakończę pokaz możliwości tej biblioteki, aczkolwiek zdaję sobie sprawę, że to co pokazałem jest jedynie czubkiem możliwości, jakie daje ta biblioteka. Niemniej jednak pozostaje w mym sercu mała iskierka nadziei, że udało mi się rozpalić w Was chęć dalszego zgłębiania wiedzy dotyczącej wykorzystania tejże biblioteki.

Generowanie wykresów 3W

Oto prosty przykład generowania wykresu 3W:

from mpl_toolkits.mplot3d import Axes3D from matplotlib import cm from matplotlib.ticker import LinearLocator, FormatStrFormatter import matplotlib.pyplot as plt import numpy as np fig = plt.figure() ax = fig.gca(projection='3d') X = np.arange(-5, 5, 0.25) Y = np.arange(-5, 5, 0.25) X, Y = np.meshgrid(X, Y) Z = np.sin(X) * np.cos(Y) surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, cmap=cm.coolwarm, linewidth=0, antialiased=False) ax.set_zlim(-1.01, 1.01) ax.set_xlabel("x") ax.set_ylabel("y") ax.set_zlabel("f(x, y) = sin(x) * cos(x)") fig.suptitle('Wykres funkcji f(x, y) = sin(x) * cos(x)') fig.savefig('fig4.jpg', dpi=72) plt.show()

Wynikiem działania tego kodu będzie uzyskanie poniższego wykresu.

Wykres 3W wygenerowany w Pythonie za pomocą biblioteki matplotlib
Rys. 4
Wykres 3W wygenerowany w Pythonie za pomocą biblioteki matplotlib.
Strony powiązane
strony powiązane
  1. matplotlib.org - dokładna dokumentacja omawianej biblioteki
Propozycje książek