38 Jooniste tegemine NumPy ühemõõtmeliste järjenditega

Jooniste tegemine

Sageli on vaja andmeid ka visuaalselt esitada, et saada parem ülevaade. Selleks saab kasutada erinevat tüüpi diagramme, näiteks tulpdiagramm. Diagrammi tüübi valik oleneb sellest, mis tüüpi on andmed ja mis on visualiseerimise eesmärk. Näiteks on sobilik kasutada joondiagrammi, kui eesmärgiks on näidata mingi tunnuse muutust.

Python pakub mitmeid mooduleid andmete visualiseerimiseks. Meie tutvustame üht kõige populaarsemat moodulit Matplotlib ja moodulit Plotly, millega on võimalik teha interaktiivseid jooniseid. Installeerimine need moodulid samamoodi nagu paigaldasime NumPy mooduli.

Matplotlib

Selleks, et saaks teha jooniseid Matplotlibiga, tuleb see esmalt importida.

import matplotlib.pyplot as plt
import numpy as np

 !  plt on levinud lühend Matplotlib kasutamiseks.

Teeme lihtsa joondiagrammi, millel on kaks telge (x-telg ja y-telg). Joondiagramme kasutatakse sageli selleks, et näidata muutust ajas. Teeme joondiagrammi olmejäätmete tekkimise kohta aastast 2010 kuni 2018 (allikas: Statistikaamet). Meil on andmed olmejäätmete tekkimisest elaniku kohta kilogrammides järjendis jäätmed. Järjendis aastad on aastaarvud 2010-2018.

jäätmed = np.array([305, 301, 280, 293, 357, 359, 376, 390, 405])
aasta = np.array([2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018])

# Lisame andmed joonisele
# Esimene argument on x-telje andmed ja teine y-telje andmed
plt.plot(aasta, jäätmed)

# Joonise kuvamiseks peab kindlasti kasutama show käsku
plt.show()

Joonise saab lihtsalt salvestada pildina (PNG), kui klõpsata salvestamine nupul .


Jooniste eesmärk on kuvada kontsentreeritult ja arusaadavalt infot. Eelneval joonisel on puudu joonise pealkiri ja telgede nimed. Ilma nendeta ei ole aru saada, mida täpsemalt joonisel kuvatakse. Lisame joonisele pealkirja ja ka telgedele nimed.

jäätmed = np.array([305, 301, 280, 293, 357, 359, 376, 390, 405])
aasta = np.array([2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018])

# Lisame andmed joonisele
# Esimene argument on x-telje andmed ja teine y-telje andmed
plt.plot(aasta, jäätmed)

# x-telje pealkiri
plt.xlabel("Aasta")

# y-telje pealkiri
plt.ylabel("Olmejäätmete tekkimine elaniku kohta, kg")

# Joonise pealkiri
plt.title("Olmejäätmete tekkimine 2010-2018")

plt.show()

Matplotlib mooduliga on võimalik teha erinevat tüüpi diagramme, näiteks tulp- ja sektordiagramme, aga ka histogramme ja hajuvusdiagramme. Lisaks on palju võimalusi joonise vormindamiseks ja stiili muutmiseks.

Järgnevalt teeme tulpdiagrammi. Tulpdiagramme kasutatakse peamiselt siis, kui soovitakse võrrelda erinevaid gruppe, näiteks mehi ja naisi, riike jne. Sageli on andmed sel juhul diskreetsed (täisarvud), näiteks igasugused loenduse andmed. Järgmises näites kasutame Eurostati andmeid interneti kasutuse kohta aastast 2019.

import matplotlib.pyplot as plt
import numpy as np

internet = np.array([99, 98, 98, 97, 95, 90, 86, 82])
riigid = np.array(["Island", "Norra", "Rootsi", "Taani", "Soome", "Eesti", "Läti", "Leedu"])

# Loome tulpdiagrammi, mille x-teljel on riigid ja y-teljel interneti kasutus
# Muudame tulpade värve, kasutada saab HEX värvi koode või värvi nimesid, nt "red".
# Iga tulba saab eraldi värvida --> järjend värvidega
plt.bar(riigid, internet, color=["#ffcc99", "#ffccff", "#99ccff", "#99e699", "#cc99ff", "#ff5050", "#0066ff", "#33cc33"])

# x-telje pealkiri
plt.xlabel("Riik")

# y-telje pealkiri
plt.ylabel("Inimeste osakaal kogu rahvastikust, %")

# Joonise pealkiri
plt.title("Interneti kasutamine Balti- ja Põhjamaades 2019")

# Joonise kuvamiseks peab kindlasti kasutama show käsku
plt.show()

Plotly

Lisaks Matplotlibile on veel mitmeid Pythoni mooduleid, millega andmeid visualiseerida. Mõned neist pakuvad ka interaktiivsete jooniste tegemist. Uurime meiegi üht neist. Plotly on Pythoni moodul, millega saab teha interaktiivseid jooniseid. Näiteks on Plotly mooduli võimalusi kasutanud koroonaviiruse analüüsivahendites, mis on loodud Tartu Ülikooli teadlaste poolt. Rohkem võib uurida koroona.ut.ee.

Kirjutame programmi, mis eelnenud näiteandmetel teeb interaktiivse joondiagrammi.

 !  Plotly jooniste tegemiseks on vajalik ka Pandas moodul paigaldada.

Esmalt peame lisaks NumPy moodulile importima ka Plotly mooduli.

import numpy as np
import plotly.graph_objects as go

Järgnevalt kasutame samu andmeid olmejäätmete kohta.

# Andmed
jäätmed = np.array([305, 301, 280, 293, 357, 359, 376, 390, 405])
aasta = np.array([2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018])

# Kasutame Figure käsku, mille argumendiks on joondiagramm
# Lisame ka x- ja y-telje andmed
fig = go.Figure(data=go.Scatter(x=aasta, y=jäätmed))

# Joonise kuvamiseks peab show käsku kasutama
fig.show()

Näeme, et Plotly loob veebilehe joonise jaoks ja avab selle lokaalselt veebibrauseris. Seda veebilehte saab lisada teistele veebilehtedele või üles laadida selleks, et teised saaksid joonisele ligipääsu. Selleks salvesta avanenud veebileht enda arvutis ja lae HTML-i fail ja sellega kaasnevad failide kaust üles. Vaata toetavalt ka Pythoni veebirakendus (Flask) materjale.

🌌 Joonise näide (klõpsa lingil): http://kodu.ut.ee/~merka123/plotly/plotly1.html

Lisame juurde ka pealkirjad telgedele ja joonisele.

jäätmed = np.array([305, 301, 280, 293, 357, 359, 376, 390, 405])
aasta = np.array([2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018])

fig = go.Figure(data=go.Scatter(x=aasta, y=jäätmed))

# Lisame juurde käsu update_layout, mis lisab joonisele
# pealkirja --> parameeter title
# x-telje pealkirja --> parameeter xaxis_title
# y-telje pealkirja --> parameeter yaxis_title
fig.update_layout(
	title="Olmejäätmete tekkimine 2010-2018",
	xaxis_title="Aasta",
	yaxis_title="Olmejäätmete tekkimine elaniku kohta, kg"
	)

fig.show()
🌌 Joonise näide (klõpsa lingil): http://kodu.ut.ee/~merka123/plotly/plotly2.html

Ka Plotlyga on võimalik teha erinevat tüüpi diagramme ja neid ka vastavalt oma äranägemise järgi kujundada. Järgnevalt teeme lihtsa sektordiagrammi, mida kasutatakse peamiselt osakaalu esitamiseks protsentides, näiteks kui palju metsa uuendatakse igas maakonnas kogu metsa uuendamisest. Samuti kasutame joonisel juba defineeritud värvipalette, mida pakub nii Plotly kui ka Matplotlib moodul. Värvipalette on mugav kasutada siis, kui ei oska ise värve välja valida. Värvipalettide kohta loe: https://plotly.com/python/builtin-colorscales/.

import numpy as np
import plotly.express as px

maakonnad = np.array(["Hiiu maakond",
                 	"Viljandi maakond",
                 	"Pärnu maakond",
                 	"Jõgeva maakond",
                 	"Valga maakond",
                 	"Saare maakond",
                 	"Lääne maakond",
                 	"Rapla maakond",
                 	"Harju maakond",
                 	"Põlva maakond",
                 	"Võru maakond",
                 	"Ida-Viru maakond",
                 	"Lääne-Viru maakond",
                 	"Järva maakond",
                 	"Tartu maakond"])

# Metsa uuendamine hektarites
metsa_uuendamine = ([282.79,
                	685.84,
                	1153.38,
                	789.95,
                	581.72,
                	168.31,
                	255.63,
                	645.86,
                	641.09,
                	647.64,
                	622.19,
                	1284.23,
                	781.41,
                	614.54,
                	676.34])

# Kasutame värvipalettidest Sequental palettide hulka kuuluvat Viridist -->
# parameeter color_discrete_sequence
fig = px.pie(names=maakonnad, values=metsa_uuendamine, color_discrete_sequence=px.colors.sequential.Viridis)


fig.update_layout(
	title="Metsa uuendamine 2019"
	)

fig.show()
🌌 Joonise näide (klõpsa lingil): http://kodu.ut.ee/~merka123/plotly/plotly5.html

Litsents

Icon for the Creative Commons Attribution 4.0 International License

Tarkvaraarendus. 2. trükk on loodud Eno Tõnisson, Tauno Palts, Kaarel Tõnisson, Heidi Meier, Merilin Säde, Ago Luberg, Birgy Lorenz, Einar Kivisalu, Meelis Antoi, ja Säde Mai Krusberg poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut