Matplotlib je biblioteka za crtanje u Pythonu, koju stručnjaci za mašinsko učenje često koriste za generisanje statičkih i dinamičnih vizualizacija podataka.
Šta je Matplotlib?
Matplotlib je kreacija Džona D. Hantera iz 2003. godine, koja je javno objavljena 8. maja 2021. godine, sa trenutnom verzijom 3.4.2.
Ova biblioteka je pretežno napisana u Pythonu, dok su delovi implementirani u C i JavaScript, što je čini kompatibilnom sa različitim platformama.
Matplotlib koristi NumPy, Python numeričko proširenje. Njegova integracija sa NumPy-om povećava njegovu vrednost kao alternativu otvorenog koda i čini ga boljom opcijom u poređenju sa MATLAB-om.
Za Python GUI aplikacije, Matplotlib omogućava iscrtavanje statičkih grafika koristeći objektno-orijentisani API koji je sastavni deo biblioteke.
Korisnici mogu vizualizovati svoje podatke uz pomoć različitih vrsta dijagrama, uključujući raspršene dijagrame, histograme, trakaste grafikone, kružne grafikone, linijske grafikone i kutijaste dijagrame, koristeći samo nekoliko redova Python koda.
Matplotlib se može koristiti za stvaranje dijagrama u različitim okruženjima, uključujući Python shell, Jupyter notebook, Jupyter lab, kao i u PyCharm-u ili Anaconda-i, i na serverima web aplikacija kao što su Flask i Django, na različitim platformama.
Slično kao u MATLAB-u, Matplotlib nudi opsežnu kontrolu nad izgledom dijagrama, omogućavajući detaljno podešavanje fontova, linija, boja i stilova.
Nakon ovog kratkog uvoda u Matplotlib, pogledajmo kako se može postaviti u vašim sistemima.
Podešavanje Matplotlib okruženja
Kao i sve ostale Python biblioteke i paketi, Matplotlib se može instalirati, zajedno sa svojim zavisnostima, koristeći pip menadžer paketa, na svim operativnim sistemima.
Naravno, potrebno je da prvo instalirate Python i pip na vašem sistemu.
Sledeće komande prikazuju verzije Pythona i pip-a, kako bi se potvrdilo da su ovi alati već instalirani.
Proverite da li je Python instaliran
Python --version
Proverite da li je pip instaliran
pip -V
Instaliranje Matplotlib-a
Sledeća komanda instalira Matplotlib paket iz Python Package Index (PyPI).
python -m pip install matplotlib
Ova komanda preuzima i instalira relevantne pakete Matplotlib-a. Trebalo bi da dobijete poruku o uspešnoj instalaciji nakon što se proces završi.
Da biste se uverili da je Matplotlib uspešno instaliran, unesite sledeću komandu, koja će prikazati verziju Matplotlib-a u vašem komandnom prozoru.
import matplotlib matplotlib.__version__
Programeri koji žele da instaliraju nekompajliranu verziju Matplotlib paketa, moraju imati pristup ispravnom kompajleru na svom sistemu, pored zavisnosti, skripti za podešavanje, konfiguracionih datoteka i zakrpa.
Međutim, ovaj način instalacije Matplotlib-a može biti komplikovan, naročito za nove korisnike. Stoga, zašto ne biste jednostavno koristili komandu u jednom redu za instalaciju biblioteke za samo nekoliko sekundi?🤔
Nakon instalacije Matplotlib-a, uvezite paket u vaše okruženje kako biste pristupili njegovim funkcijama.
Opcije crtanja u Matplotlib-u
Matplotlib pruža brojne opcije za crtanje i vizualizaciju podataka. Takođe omogućava detaljno podešavanje dijagrama, nudeći različite teme, boje i palete koje korisnik može primeniti za manipulaciju dijagramima.
Ove opcije crtanja uključuju:
#1. Trakasti grafikoni
Trakasti grafikoni su pogodni za vizuelizaciju kvantitativnog poređenja vrednosti unutar iste kategorije.
Matplotlib predstavlja ovaj tip grafika koristeći pravougaone trake, gde njihova dužina ili visina predstavljaju proporcionalne vrednosti. Trake mogu biti postavljene horizontalno ili vertikalno.
Matplotlib koristi funkciju `plt.bar()` za kreiranje trakastih grafikona.
Pored toga, možete koristiti niz drugih funkcija za manipulaciju ovim grafikonima. Na primer, funkcije `plt.xlabel()` i `plt.ylabel()` služe za označavanje x i y ose grafikona, respektivno.
Funkcija `plt.title()` vam omogućava da dodate naslov vašem grafikonu, dok funkcija `plt.savefig()` omogućava njegovo čuvanje. Funkcija `plt.show()`, koja je najvažnija, prikazuje dijagram.
#2. Kružni grafikoni
Proporcionalnu distribuciju stavki unutar iste kategorije možete vizualizovati pomoću kružnog statističkog dijagrama koji nazivamo kružnim grafikonom.
Kružni grafikoni prikazuju podatke u procentualnom obliku. Celokupna površina grafikona odgovara ukupnom procentu podataka, dok pojedinačni delovi kolača predstavljaju delove procenta podataka.
Matplotlib koristi funkciju `plt.pie()` koja crta i prilagođava parametre kružnog grafikona. Više parametara, kao što je `autopct`, koji prikazuje vrednost kružnog grafikona do jedne decimale, korisni su pri kreiranju ovih dijagrama.
Poslovne organizacije koriste kružne grafikone za predstavljanje relevantnih informacija kao što su operacije, prodaja ili resursi.
#3. Histogram
Histogram prikazuje numeričku distribuciju podataka. Koristi neprekidne intervale za podelu podataka u različite segmente.
Glavna razlika između histograma i trakastog grafikona je u tipu podataka kojima se bave. Dok histogrami rukuju neprekidnim podacima, trakasti grafikoni obrađuju kategoričke podatke.
Matplotlib koristi funkciju `hist()`, koja koristi niz slučajnih ili definisanih vrednosti za kreiranje histograma.
#4. Linijski grafikoni
Ovi dijagrami su korisni za prikazivanje odnosa između dve vrednosti podataka koje definišemo kao numeričke ili kategoričke, na osnovu X i Y osa.
Linijski grafikoni su značajni za praćenje promene vrednosti podataka tokom vremena.
#5. Raspršeni grafikoni
Raspršeni grafikoni ukazuju na odnos, uključujući korelaciju između varijabli u podacima. Takođe su korisni za identifikaciju odstupanja.
Raspršeni grafikoni koriste tačke za predstavljanje odnosa promenljivih podataka i kako promena jedne varijable može uticati na drugu.
Kako kreirati grafikone u Matplotlib-u
Matplotlib koristi različite funkcije za generisanje različitih vrsta grafikona. Takođe zahteva vrlo malo linija koda za njihovo kreiranje.
U nastavku ćemo videti kako da kreiramo različite opcije crtanja koristeći različite funkcije u Matplotlib-u.
#1. Trakasti grafikon u Matplotlib-u
Trakasti grafikoni, kao što je gore objašnjeno, prikazuju kategorije podataka koristeći trake i ose, koje predstavljaju poređenje kategorija na jednoj osi i odgovarajuće vrednosti na drugoj osi.
Funkcija `bar()` u Matplotlib-u prihvata različite rasporede argumenata kako bi se definisao izgled traka, kao što je prikazano ispod.
plt.bar(x, y, height, width, bottom, align)
Parametri x i y predstavljaju vrednosti x koordinata i y koordinata trake na grafikonu. Parametar `width` predstavlja širinu trake, dok parametar `height` predstavlja njenu visinu.
Na primer, prikažimo broj pasa i mačaka u skloništu za životinje pod imenom „x“.
import matplotlib.pyplot as plt import numpy as np x = ["Mačke", "Psi"] plt.xlabel("Mačke i Psi u Skloništu") plt.ylabel("Broj Životinja u Skloništu") plt.title("Broj mačaka i pasa u skloništu x") y = [300, 350] plt.bar(x, y, color="black", width = 0.5)
Izlaz:
Izlaz trakastog grafikona u Matplotlib-u
Kao u gornjem primeru, možete dalje precizirati boju traka koristeći atribut `color`. Pored toga, `plt.xlabel` i `plt.ylabel` imenuju x i y ose, dok `plt.title` dodaje naslov grafikonu.
#2. Kako napraviti kružni grafikon
Matplotlib koristi funkciju `pie()`, koja je sastavni deo `pyplot` modula, za iscrtavanje kružnog grafikona.
Funkcija predstavlja podatke za iscrtavanje u obliku niza.
Sintaksa:
matplotlib.pyplot.pie(data, explode=None, labels=None, colors=None, autopct=None, shadow=False)
Parametar `colors` postavlja boju kriški kruga. Možete koristiti niz vrednosti da biste dodelili boju svakoj kriški.
Da biste dodatno uključili detalje svake kriške u kolaču, argument `autopct` dodaje numeričke procente koje svaka kriška predstavlja, koristeći Python notaciju za formatiranje stringova. Argument `explode` prihvata niz vrednosti počevši od 0,1 da bi definisao udaljenost kriški od centra kruga.
Nacrtajmo kružni grafikon koji prikazuje resurse u procentima dodeljene za određeni projekat.
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("Resursi dodeljeni za nasumični projekat") plt.pie(y, labels = mylabels, colors=colors,explode = explodevalues, autopct="%1.1f%%", shadow = True) plt.show()
Izlaz:
Izlaz kružnog grafikona u Matplotlib-u
Gornji grafikon prikazuje kružni grafikon sa četiri kriške označene sa w, x, y i z, respektivno. Vrednosti `explode` definišu koliko će kriške biti udaljene od centra kruga.
Iz gornjeg grafikona, kriška „x“ je najudaljenija jer je njena vrednost explode veća od ostalih. Atribut `shadow` dodaje senku dijagramu kruga kao na slici, dok `autopct` postavlja relativni procenat celog kruga koji svaki deo predstavlja.
#3. Kreiranje histograma
Kod histograma ćemo koristiti niz intervala da predstavimo opseg datih vrednosti na x-osi.
S druge strane, y-osa će predstavljati informacije o frekvenciji.
Za razliku od drugih dijagrama, crtanje histograma u Matplotlib-u zahteva neke unapred definisane korake koje morate pratiti da biste kreirali dijagram.
Ovi koraci uključuju:
- Napravite korpe opsega iz skupa vrednosti podataka koji imate. Možete koristiti funkciju `np.random.normal()` koja može generisati nasumične vrednosti za vas.
- Koristeći niz intervala, rasporedite vrednosti u opseg vrednosti.
- Prebrojite vrednosti koje spadaju u svaki određeni interval.
- Sada koristite funkciju `matplotlib.pyplot.hist()` da biste kreirali histogram.
Funkcija `hist()` prihvata nekoliko parametara, uključujući:
x – Ovo predstavlja ulazni niz
bins – Ovo je opcioni parametar koji predstavlja nepreklapajuće intervale promenljivih koji mogu sadržati cele brojeve ili niz nizova.
range – Definiše gornji i donji opseg korpi
align – Ovaj parametar kontroliše poravnanje histograma. Bilo levo, desno ili srednje.
color – Definiše boju traka.
rwidth – Postavlja relativnu širinu traka na histogramu u odnosu na širinu korpe.
log – Parametar log definiše logaritamsku skalu na osi histograma.
Sledeći primer iscrtava histogram sa definisanim vrednostima.
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('Primer histograma') plt.xlabel('x osa') plt.ylabel('frekvencija') plt.show()
Izlaz:
Izlaz histograma u Matplotlib-u
#4. Linijski grafikon u Matplotlib-u
Matplotlib koristi svoju podbiblioteku pod nazivom `pyplot`, koja sadrži različite funkcije koje pomažu u njenoj implementaciji.
Koristimo funkciju `plot()`, koja je generička funkcija u sklopu `pyplot` modula, za crtanje linijskih dijagrama i drugih tipova linija, uključujući zakrivljene grafike i višestruke linije. Kreiranje ovih različitih vrsta grafikona zavisi od vrednosti koje prosleđujete y-osi.
Prilikom crtanja, uvezite `matplotlib.pyplot` i NumPy, koji generiše grafikone. Metod `plot(x,y)` kreira linijski grafikon prosleđivanjem slučajnih vrednosti u argumente `x` i `y`.
Pored toga, možete proslediti promenljivu label koja imenuje grafikon. Funkcija `title` imenuje naslov grafikona, dok funkcije `xlabel` i `ylabel` imenuju ose. Konačno, funkcija `show()` prikazuje grafikon.
Na primer:
import matplotlib.pyplot as plt import numpy as np x = np.linspace(0, 5, 10) y = 3*x + 2 plt.title('Primer linijskog grafikona') plt.xlabel('x osa') plt.ylabel('y osa') plt.plot(x, y) plt.show()
Rezultat:
Izlaz linijskog grafikona u Matplotlib-u
Atribut `np.linspace` vraća na grafikon skup ravnomerno raspoređenih brojeva u definisanom intervalu za x vrednosti. Ovo će kreirati niz od 10 vrednosti u opsegu od 0 do 5. Vrednosti y se kreiraju pomoću jednačine koja koristi odgovarajuće vrednosti x.
Kreiranje raspršenih grafikona
Matplotlib koristi metod `scatter()` za kreiranje ovog tipa grafikona.
Ovaj metod uzima u obzir sledeće parametre.
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)
Parametri `x_axis_data` i `y_axis_data` ne mogu biti prazni, za razliku od ostalih parametara koji su opcioni i imaju None kao podrazumevanu vrednost. Dok argument `x_axis_data` definiše niz podataka za x-osu, `y_axis_data` postavlja niz podataka za y-osu.
Primer raspršenog grafikona u Matplotlib-u:
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('Primer raspršenog grafikona') plt.xlabel('x varijabla') plt.ylabel('y varijabla') plt.scatter(x, y, c ="green") # To show the plot plt.show()
Njegov izlaz će izgledati ovako:
Izlaz raspršenog grafikona u Matplotlib-u
Šta je subplot() u Matplotlib-u
Funkcija `subplot()` se može koristiti za crtanje više dijagrama na jednoj Matplotlib slici. Ovo omogućava pregled i poređenje više grafika na jednoj slici.
Ova funkcija će vratiti tuple sa tri argumenta; redovi i kolone kao prvi i drugi argument, respektivno, i indeks trenutnog grafikona kao treći argument.
Redovi i kolone jasno definišu izgled Matplotlib dijagrama.
Prema tome, `plt.subplot(2, 1, 1)` će, na primer, iscrtati Matplotlib figuru sa dva reda i jednom kolonom, i ovaj grafikon će biti prvi grafikon.
S druge strane, `plt.subplot(2, 1, 2)` prikazuje drugi grafikon sa dva reda i jednom kolonom.
Iscrtavanje ova dva grafikona će ih prikazati jedan iznad drugog, kao u primeru ispod.
import matplotlib.pyplot as plt import numpy as np #plot 1: x = np.array([2, 4, 6, 8]) y = np.array([3, 6, 9, 12]) plt.subplot(2, 1, 1) plt.plot(x,y) #plot 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()
Rezultat gornjeg primera će izgledati kao na slici ispod.
Koristeći drugačiji primer, hajde da upotrebimo funkciju `subplot` da iscrtamo dve figure sa jednim redom i dve kolone. Ovo će prikazati grafikone jedan pored drugog.
import matplotlib.pyplot as plt import numpy as np #plot 1: x = np.array([2, 4, 6, 8]) y = np.array([3, 6, 9, 12]) plt.subplot(1, 2, 1) plt.plot(x,y) #plot 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()
Gornji primer će prikazati sledeći rezultat.
Pa, ovo je bilo zanimljivo i interaktivno, zar ne?😃
Završne reči
Matplotlib je poznata biblioteka za vizualizaciju podataka u Python-u. Njena interaktivnost i jednostavnost upotrebe, čak i za početnike, čine je odličnim alatom za crtanje grafika u Python-u.
Ovaj članak je pokrio primere različitih dijagrama koje funkcije u okviru Matplotlib-a mogu kreirati, uključujući kružne grafikone, trakaste grafikone, histograme i raspršene grafikone.
Naravno, Python ima nekoliko drugih biblioteka koje stručnjaci za mašinsko učenje i naučnici podataka mogu koristiti za generisanje vizualizacija.
Možete istražiti dodatne tipove grafikona koji se mogu kreirati pomoću Matplotlib-a i funkcije koje se koriste za njihovu izradu.
Srećno sa crtanjem!📉📊