51 Jooniste loomine seeriaid kasutades

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.

Matplotlib

Pandase mooduli on integreeritud Matplotlib mooduliga. Selle tulemusel on jooniseid lihtsam koostada, sest Pandas oskab näiteks joonise teljed automaatselt tuvastada ja eraldi ei pea kasutama selleks Matplotlib mooduli vastavat funktsiooni. Selleks, et saaks jooniseid luua, tuleb Matplotlib moodul installeerida ja importida.

import matplotlib.pyplot as plt

 !  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 seerias jäätmed.

import pandas as pd
import matplotlib.pyplot as plt


jäätmed = pd.Series({2010: 305, 2011: 301, 2012: 280, 2013: 293, 2014: 357, 2015: 359, 2016: 376, 2017: 390, 2018: 405})

# x- ja y- telje andmed määratakse automaatselt
# x-telje väärtused on vaikimisi sildid
# y- teljele lisatakse väärtused
jäätmed.plot.line()

# Joonise kuvamiseks peab kasutama show() Matplotlib moodulist
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. Selleks saab line funktsiooni väljakutsel lisada parameetritele xlabel (x-telje pealkiri), ylabel (y-telje pealkiri) ja title (joonise pealkiri) sobilikud väärtused.

import pandas as pd
import matplotlib.pyplot as plt


jäätmed = pd.Series({2010: 305, 2011: 301, 2012: 280, 2013: 293, 2014: 357, 2015: 359, 2016: 376, 2017: 390, 2018: 405})

jäätmed.plot.line(xlabel="Aastad",
              ylabel="Olmejäätmete tekkimine elaniku kohta, kg",
              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. Seeria loome aga NumPy järjendeid kasutades.

import matplotlib.pyplot as plt
import numpy as np
import pandas as pd

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

internet_riigid = pd.Series(internet, index=riigid)

# 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
värvid = ["#ffcc99", "#ffccff", "#99ccff", "#99e699", "#cc99ff", "#ff5050", "#0066ff", "#33cc33"]
internet_riigid.plot.bar(xlabel="Riik",
                    ylabel="Inimeste osakaal kogu rahvastikust, %",
                    title="Interneti kasutamine Balti- ja Põhjamaades 2019",
                    color=värvid)

# 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.

Esmalt peame installeerima ja importima ka Plotly mooduli.

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

import pandas as pd
import plotly.graph_objects as go

jäätmed = pd.Series({2010: 305, 2011: 301, 2012: 280, 2013: 293, 2014: 357, 2015: 359, 2016: 376, 2017: 390, 2018: 405})

# Lisame x- ja y-telje andmed
fig = go.Figure(data=go.Scatter(x=jäätmed.index, y=jäätmed.values))

# Joonise kuvamiseks peab show käsku kasutama
fig.show()
🌌 Joonise näide (klõpsa lingil): http://kodu.ut.ee/~merka123/plotly/plotly1.html

Lisame juurde ka pealkirjad telgedele ja joonisele.

import pandas as pd
import plotly.graph_objects as go

jäätmed = pd.Series({2010: 305, 2011: 301, 2012: 280, 2013: 293, 2014: 357, 2015: 359, 2016: 376, 2017: 390, 2018: 405})

# Lisame x- ja y-telje andmed
fig = go.Figure(data=go.Scatter(x=jäätmed.index, y=jäätmed.values))

# 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 (allikas: Statistikaamet). 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/. Pandase seeria loome NumPy järjendeid kasutades (tegelikult võib NumPy järjendeid kasutada ka otse jooniste tegemiseks, ilma seeriaks loomiseta).

import pandas as pd
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])

seeria = pd.Series(metsa_uuendamine, index=maakonnad)

# Kasutame värvipalettidest Sequental palettide hulka kuuluvat Viridist -->
# parameeter color_discrete_sequence
fig = px.pie(names=seeria.index, values=seeria.values, 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, ja Säde Mai Krusberg jt poolt Creative Commons Attribution 4.0 International License litsentsi alusel, kui pole teisiti märgitud.

Jaga seda raamatut