Садржај
Припрема
1. Увод у Џупитер (*Jupyter*)
2. Низови података и линијски дијаграми
3. Хистограми и боје
4. Просек и медијана низа бројева
5. Фреквенцијска анализа и секторски дијаграми
6. Табеларно представљени подаци
7. Индексирање и транспоновање табеле
8. Модификације табеле и записивање табеле у датотеку
9. Сортирање, филтрирање и фреквенцијска анализа
10. Џупитер и Ексел

Хистограми и боје

У овој лекцији ћеш научити:

  1. како да приказујеш податке хистограмима; и

  2. како да приказујеш графиконе у разним бојама.

Хистограми

У ситуацијама када података нема много згодно их је приказати низом стубића. Такви дијаграми се зову хистограми или стубичасти дијаграми (на енглеском bar charts).

Пошто ћемо опет цртати графиконе увешћемо прво библиотеку за цртање графикона и дати јој скраћено име:

In [1]: import matplotlib.pyplot as plt

Да се подсетимо: библиотека нам је на располагању у овој радној свесци, али је за потребе неке друге радне свеске морамо поново увести (из те, друге, радне свеске).

Претпоставимо да је на полугодишту један ученик имао следеће оцене из наведених предмета:

Оцене једног ученика

Предмет

Оцена

Математика

2

Српски

4

Ликовно

5

Историја

3

Физичко

5

Музичко

4

Техничко

5

Податке можемо представити помоћу две листе, овако:

In [2]: predmeti = ["mat", "srp", "lik", "ist", "fiz", "muz", "tio"]
   ...: ocene    = [2,     4,     5,     3,     5,     4,     5    ]
   ...: 

Графички их можемо представити низовима стубића користећи функцију bar. Ова врста дијаграма се на енглеском зове bar chart (дијаграм са стубићима), а ми их зовемо хистограми:

In [3]: plt.bar(predmeti, ocene)
   ...: plt.title("Ocene na polugodištu")
   ...: plt.show()
   ...: 
../_images/J03slika1.png

Уколико желиш да повећаш димензије графикона можеш користити функцију figure са параметром figuresize (енглеска реч figure значи „илустрација, приказ”, док енглеска реч size значи „величина”):

In [4]: plt.figure(figsize=(10,5))
   ...: plt.bar(predmeti, ocene)
   ...: plt.title("Ocene na polugodištu")
   ...: plt.show()
   ...: 
../_images/J03slika2.png

Библиотека за цртање додељује графикону боју како она сматра да треба. Ако нам се боја коју је библиотека одабрала не свиђа можемо опцијом color (енгл. „боја”) променити боју.

In [5]: plt.figure(figsize=(10,5))
   ...: plt.bar(predmeti, ocene, color="g")
   ...: plt.title("Ocene na polugodištu")
   ...: plt.show()
   ...: 
../_images/J03slika3.png

Дијаграм је сада исцртан зеленом бојом („g” = green = зелено). Можемо користити следеће боје:

Скраћенице за боје

Слово

Боја (енг)

Боја (српски)

b

blue

плава

g

green

зелена

r

red

црвена

c

cyan

светло плава

m

magenta

роза

y

yellow

жута

k

black

црна

w

white

бела

Приказивање две групе података на истом дијаграму

Могуће је на истом графикону приказати две групе података. Ево примера.

„Нормална телесна температура” је заправо интервал температура који се мења са узрастом особе. Када се температура мери испод пазуха, нормална телесна температура је описана следећом табелом:

Нормална телесна температура

Узраст

Температура (у Целзијусима)

0–2 године

34,7–37,3

3–10 година

35,9–36,7

11–65 година

35,2–36,9

преко 65 година

35,6–36,2

У наредној ћелији смо податке из ове табеле представили низовима:

In [6]: starosneGrupe    = ["0-2", "3-10", "11-65", "65+"]
   ...: normalnaT_donja  = [34.7,  35.9,   35.2,    35.6]
   ...: normalnaT_gornja = [37.3,  36.7,   36.9,    36.2]
   ...: 

Приказаћемо ове податке на једном графикону тако што ћемо навести две bar наредбе.

In [7]: plt.bar(starosneGrupe, normalnaT_gornja)
   ...: plt.bar(starosneGrupe, normalnaT_donja)
   ...: plt.title("Normalna telesna temperatura po starosnim grupama")
   ...: plt.xlabel("Starosne grupe (godine)")
   ...: plt.ylabel("Temperatura (C)")
   ...: plt.show()
   ...: 
../_images/J03slika4.png

Функције xlabel и ylabel додају појашњења ознака на \(x\)-оси, односно на \(y\)-оси.

Овај дијаграм је нечитак јер су разлике између доње и горње границе нормалне телесне температуре релативно мале у односу на податке које приказујемо. Да би се боље видело о којим интервалима се ради можемо приказати само онај део дијаграма који се односи на величине од, рецимо, 34 степена Целзијуса то 39 степени Целзијуса користећи наредбу ylim (:math:`y`-limits, што значи, „границе за \(y\)-осу”).

In [8]: plt.bar(starosneGrupe, normalnaT_gornja)
   ...: plt.bar(starosneGrupe, normalnaT_donja)
   ...: plt.ylim(34,39)
   ...: plt.title("Normalna telesna temperatura po starosnim grupama")
   ...: plt.xlabel("Starosne grupe (godine)")
   ...: plt.ylabel("Temperatura (C)")
   ...: plt.show()
   ...: 
../_images/J03slika5.png

Важно је напоменути да је редослед навођења bar наредби битан јер библиотека прво исцрта више стубиће, па преко њих ниже. Ако променимо редослед bar наредби добићемо дијаграм који не представља оно што желимо – стубићи који представљају доње границе се не виде јер је преко њих нацртана друга група података:

In [9]: plt.bar(starosneGrupe, normalnaT_donja)
   ...: plt.bar(starosneGrupe, normalnaT_gornja)
   ...: plt.ylim(34,39)
   ...: plt.title("Normalna telesna temperatura po starosnim grupama")
   ...: plt.xlabel("Starosne grupe (godine)")
   ...: plt.ylabel("Temperatura (C)")
   ...: plt.show()
   ...: 
../_images/J03slika6.png

Дакле, мора овим редом:

In [10]: plt.bar(starosneGrupe, normalnaT_gornja)
   ....: plt.bar(starosneGrupe, normalnaT_donja)
   ....: plt.ylim(34,39)
   ....: plt.title("Normalna telesna temperatura po starosnim grupama")
   ....: plt.xlabel("Starosne grupe (godine)")
   ....: plt.ylabel("Temperatura (C)")
   ....: plt.show()
   ....: 
../_images/J03slika7.png

За некога ко је само бацио поглед на дијаграм и није пажљиво читао текст пре њега није сасвим јасно који подаци су представљени плавим, а који наранџастим стубићима. Зато се дијаграму може додати легенда којом се дају додатна објашњења.

Прво ћемо у обе bar команде додати још по један параметар облика label="објашњење" који укратко описује податке приказане на том делу дијаграма. Функција legend потом црта легенду на дијаграму.

In [11]: plt.bar(starosneGrupe, normalnaT_gornja, label="gornja granica")
   ....: plt.bar(starosneGrupe, normalnaT_donja, label="donja granica")
   ....: plt.ylim(34,39)
   ....: plt.title("Normalna telesna temperatura po starosnim grupama")
   ....: plt.xlabel("Starosne grupe (godine)")
   ....: plt.ylabel("Temperatura (C)")
   ....: plt.legend()
   ....: plt.show()
   ....: 
../_images/J03slika8.png

Ево и кратког видеа који илуструје оно што смо до сада видели:

Задаци

За вежбу покрени Џупитер окружење и реши задатке из радне свеске J03.ipynb

(Created using Swinx, RunestoneComponents and PetljaDoc)
© 2022 Petlja
A- A+