Programiranje u fizici
- 4. DEO -

U ovom delu kursa će biti demonstrirano kako se upotrebom pythona i biblioteke matplotlib mogu praviti grafici.

1.    Biblioteka matplotlib

Python sam po sebi nema mogućnost crtanja grafika. Međutim, dostupno je nekoliko bilbioteka pomoću kojih se mogu napraviti izuzetni grafici , praktično za bilo kakve potrebe. Jedna od biblioteka za crtanje grafika jeste i matplotlib. Ova biblioteka je u anaconda IDE već instalirana, a ukoliko nije, može se instalirati upotrebom komande pip install matplotlib. Učitavanje biblioteke se vrši na standardan način, skraćenica koja se najčešće koristi je plt, dok je odgovarajuća komanda plt.plot(), gde se u argumentu nalaze promenljive koje sadrže vrednosti koje se iscrtavaju na osama (prva pozicija argumenta se odnosi na x-osu, dok se druga pozicija odnosi na y-osu), kao i ostale opcije kojima se vrši fino podešavanje grafika.

U prvom primeru biće demonstrirano kako se može nacrtati jednostavan grafik, na osnovu vrednosti koje su smeštene u dve liste. 

Primer 4.1. – Crtanje jednostavnog grafika

U ovom jednostavnom primeru vidi se da komandu plt.plot() treba da prati i komanda plt.show(), kako bi se iscrtao grafik. Takođe, u okviru funkcije plt.plot(), argumenti su samo promenljive x i y, što su u stvari liste koje sadrže vrednosti koje se iscrtavaju. Argument komande plt.plot() može da sadrži mnogo više elemenata, čime se podešavaju različiti elementi grafika.

Nazivi osa se definišu upotrebom komandi plt.xlabel() i plt.ylabel(), gde su argumenti funkcije string tip podataka. Naziv grafika se definiše funkcijom plt.title(), gde je argument naravno opet string tip podatka. Program za prethodni grafik sa definisanim nazivima osa i naslovom je dat u sledećem primeru.

Primer 4.2. – Definisanje naslova osa i naziva grafika

U poslednja dva primera na graficima su nacrtane linije koje su dobijene povezivanjem tačaka koje su definisane listama x i y (u linijama 3 i 4). Međutim, na graficima se često umesto linija crtaju tačke. Podrazumevana vrednost plt.plot() funkcije je da crta linije dobijene spajanjem tačaka, a ukoliko se žele nacrtati samo tačke, onda je u argument funkcije plt.plot() neophodno dodati “o”, kao što je to pokazano u sledećem primeru. Podrazumevana boja tačaka je plava, a ukoliko se žele tačke druge boje, u argument funkcije plt.plot() mogu se kucati “ro” ili “go” za dobijanje crvenih i zelenih tačaka, respektivno. U sledećem primeru je pokazano kako se na grafiku mogu dobiti tačke, umesto linija.

Primer 4.3. – Crtanje tačaka

Važno je naglasiti i da se na jednom grafiku može nacrtati više linija, odnosno, skupova podataka. Na grafiku će biti onoliko linija (ili skupova podataka) koliko ima plt.plot() funkcija pre funkcije plt.show(). Ovo je posebno korisno kada treba uporediti podatke. Crtanje više skupova podataka na jednom grafiku je pokazano u sledećem primeru.

Primer 4.4. – Crtanje više skupova podataka na jednom grafiku

U poslednjem primeru je pokazano kako se mogu nacrtati tri skupa podataka. U liniji 8 je instruisano da se nacrtaju crvene tačke, dok su preostale dva skupa podataka nacrtana u formi linija. Ovakav princip se može primeniti na crtanje praktično beskonačno skupova podataka na jednom grafiku.

Međutim, u poslednjem primeru, jedan element fali kako bi grafik bio potpun. To su legende koje bi pokazivale na šta se svaki od skupa podataka odnosi. Legenda se instruiše u argumentu plt.plot() funkcije, davanjem string vrednosti parametru label, s tim što se crtanje legende na grafiku mora pozvati još jednom funkcijom, a to je plt.legend(). Na sledećem primeru je pokazano kako se dodaju legende prethodnom grafiku.

Primer 4.5. – Dodavanje legende na grafik

Treba naglasiti da matplotlib biblioteka praktično sama vodi računa o bojama tačaka i linija, kao i poziciji legende. Međutim, i ovi parametri grafika se mogu efikasno kontrolisati odgovarajućim funkcijama, ali to ostavljamo za neki drugi put.