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 |