Biblioteka matplotlib - tworzenie własnych wykresów 2W i 3W
Stronę tą wyświetlono już: 25978 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.

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.

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.

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.


Tytuł:
Python w zadaniach. Programowanie dla młodzieży. Poziom podstawowy
Autor:
Urszula Wiejak, Adrian Wojciechowski

Tytuł:
Python i praca z danymi. Przetwarzanie, analiza, modelowanie i wizualizacja. Wydanie III
Autor:
Avinash Navlani, Armando Fandango, Ivan Idris

Tytuł:
Black Hat Python. Język Python dla hakerów i pentesterów. Wydanie II
Autor:
Justin Seitz, Tim Arnold

Tytuł:
Python z życia wzięty. Rozwiązywanie problemów za pomocą kilku linii kodu
Autor:
Lee Vaughan

Tytuł:
Python dla nastolatków. Projekty graficzne z Python Turtle
Autor:
Krzysztof Łos

Tytuł:
Python i Excel. Nowoczesne środowisko do automatyzacji i analizy danych
Autor:
Felix Zumstein

Tytuł:
Python dla testera
Autor:
Piotr Wróblewski

Tytuł:
Python 3. Projekty dla początkujących i pasjonatów
Autor:
Adam Jurkiewicz

Tytuł:
Machine learning, Python i data science. Wprowadzenie
Autor:
Andreas C. Müller, Sarah Guido

Tytuł:
Python na maturze. Rozwiązania i analiza wybranych zadań programistycznych
Autor:
Roland Zimek
@Marta Odpowiedź jest prostsza aniżeli odebranie dzieciakowi lizaka:
plt.plot(x, np.sin(x), '#ffff00' /* tutaj podajesz kolor */, x, np.cos(x), 'b')