Хистограми и боје¶
У овој лекцији ћеш научити:
како да приказујеш податке хистограмима; и
како да приказујеш графиконе у разним бојама.
Хистограми¶
У ситуацијама када података нема много згодно их је приказати низом стубића. Такви дијаграми се зову хистограми или стубичасти дијаграми (на енглеском 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()
...:

Уколико желиш да повећаш димензије графикона можеш користити функцију figure
са параметром figuresize
(енглеска реч figure значи „илустрација, приказ”, док енглеска реч size значи „величина”):
In [4]: plt.figure(figsize=(10,5))
...: plt.bar(predmeti, ocene)
...: plt.title("Ocene na polugodištu")
...: plt.show()
...:

Библиотека за цртање додељује графикону боју како она сматра да треба. Ако нам се боја коју је библиотека одабрала не свиђа можемо опцијом color
(енгл. „боја”) променити боју.
In [5]: plt.figure(figsize=(10,5))
...: plt.bar(predmeti, ocene, color="g")
...: plt.title("Ocene na polugodištu")
...: plt.show()
...:

Дијаграм је сада исцртан зеленом бојом („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()
...:

Функције 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()
...:

Важно је напоменути да је редослед навођења 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()
...:

Дакле, мора овим редом:
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()
....:

За некога ко је само бацио поглед на дијаграм и није пажљиво читао текст пре њега није сасвим јасно који подаци су представљени плавим, а који наранџастим стубићима. Зато се дијаграму може додати легенда којом се дају додатна објашњења.
Прво ћемо у обе 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()
....:

Ево и кратког видеа који илуструје оно што смо до сада видели:
Задаци¶
За вежбу покрени Џупитер окружење и реши задатке из радне свеске J03.ipynb