44 Joonised NumPy kahemõõtmeliste järjenditega
Kasutame nüüd päris andmeid joonise loomiseks. Loeme CSV failist COVID-19 haigusjuhtude tabeli (allikas: https://koroonakaart.ee/et ). Andmetabelis on järgmised veerud: kuupäev (tekst), kinnitatud haigusjuhud (täisarv), aktiivsete haigusjuhtude hinnang (täisarv), surmad (täisarv), haiglaravil (täisarv), intensiivravil (täisarv). Andmete lugemiseks on mitu võimalust ja programmeerija ise otsustab, millist viisi ta soovib kasutada. Selle näite puhul kasutame viisi, kus määrame iga veeru tüübi eraldi, sest andmed on erinevat tüüpi ja veerge ei ole väga palju. Faili saad alla laadida siit: http://kodu.ut.ee/~merka123/plotly/haigusjuhtumid.csv .
import numpy as np csv = np.genfromtxt('haigusjuhtumid.csv', delimiter=";", names=True, encoding = 'UTF-8', dtype=['U20', 'i4', 'i4', 'i4', 'i4','i4'])
Teeme joondiagrammi kinnitatud haigusjuhtude kohta kuupäevade järgi. Selleks kasutame Plotly moodulit.
import numpy as np import plotly.graph_objects as go # Andmed csv = np.genfromtxt('haigusjuhtumid.csv', delimiter=";", names=True, encoding = 'UTF-8', dtype=['U20', 'i4', 'i4', 'i4', 'i4','i4']) kuupaev = csv["Kuupäev"] haigusjuhud = csv["Kinnitatud_haigusjuhud"] # Kasutame Figure käsku, mille argumendiks on joondigramm # Lisame ka x- ja y-telje andmed dia = go.Figure(data=go.Scatter(x=kuupaev, y=haigusjuhud)) # Lisame juurde käsu update_layout, mis lisab joonisele # pealkirja --> parameeter title # x-telje pealkirja --> parameeter xaxis_title # y-telje pealkirja --> parameeter yaxis_title dia.update_layout( title="COVID-19 haigusjuhud Eestis", xaxis_title="Kuupäev", yaxis_title="Kinnitatud haigusjuhud" ) # Joonise kuvamiseks peab kasutama show käsku dia.show()
🌌 Joonise näide (klõpsa lingil): http://kodu.ut.ee/~merka123/plotly/plotly3.html |
Järgmisena lisame joonisele andmeid ka teistest veergudest. Selleks, et joonisel kuvataks mitu joont, tuleb kasutada funktsiooni add_trace
iga joone jaoks eraldi. Samuti lisame igale joonele nime, mis kuvatakse joonise legendis.
import numpy as np import plotly.graph_objects as go # Andmed csv = np.genfromtxt('haigusjuhtumid.csv', delimiter=";", names=True, encoding = 'UTF-8', dtype=['U20', 'i4', 'i4', 'i4', 'i4','i4']) kuupaev = csv["Kuupäev"] haigusjuhud = csv["Kinnitatud_haigusjuhud"] hinnang = csv["Aktiivsete_haigusjuhtude_hinnang"] surmad = csv["Surmad"] ravil = csv["Haiglaravil"] intensiiv = csv["Intensiivravil"] # Kasutame Figure käsku, diagrammi loomiseks dia = go.Figure() # Lisame iga veeru kohta andmed joonisele # Kuna x- ja y-telje andmed on iga joone puhul vajalikud, siis # lisame alati x-teljele kuupäevad # lisame ka legendi jaoks igale joonele nime --> parameeter name dia.add_trace(go.Scatter(x=kuupaev, y=haigusjuhud, name="Kinnitatud haigusjuhud" )) dia.add_trace(go.Scatter(x=kuupaev, y=hinnang, name="Aktiivsete haigusjuhtude hinnang")) dia.add_trace(go.Scatter(x=kuupaev, y=surmad, name="Surmad")) dia.add_trace(go.Scatter(x=kuupaev, y=ravil, name="Haiglaravil")) dia.add_trace(go.Scatter(x=kuupaev, y=intensiiv, name="Intensiivravil")) # Lisame juurde käsu update_layout, mis lisab joonisele # pealkirja --> parameeter title # x-telje pealkirja --> parameeter xaxis_title # y-telje pealkirja --> parameeter yaxis_title dia.update_layout( title="COVID-19 haigusjuhud Eestis", xaxis_title="Kuupäev", yaxis_title="Haigusjuhud", ) # Joonise kuvamiseks peab show käsku kasutama dia.show()
🌌 Joonise näide (klõpsa lingil): http://kodu.ut.ee/~merka123/plotly/plotly4.html |
Samad andmed võib ka veebist lugeda.
from urllib.request import urlopen # Andmed url = 'http://kodu.ut.ee/~merka123/plotly/haigusjuhtumid.csv' andmed = urlopen(url) csv = np.genfromtxt(andmed, delimiter=";", names=True, encoding = 'UTF-8', dtype=['U20', 'i4', 'i4', 'i4', 'i4','i4'])
Plotly pakub ka erinevaid andmestikke, mida kasutada: https://github.com/plotly/datasets. Üks nendest on Gapminderi veebisaidilt pärit andmestik, kus on järgmised andmed riikide kohta aastast 1952 – 2007: eeldatav keskmine eluiga (lifeExp
), riik (country
), maailma regioon (continent
), aasta (year
), riigi populatsioon (pop
), SKT elaniku kohta (gdpPercap
), riigi ISO kolmetäheline kood (iso_alpha
), riigi ISO number (iso_num
) (loe lähemalt List of ISO 3166 country codes).
Kasutame neid andmeid mulldiagrammi tegemiseks. Mulldiagrammil on justkui kolm mõõdet: x- ja y-telg, aga ka kolmas mõõde, mis on mulli suurus. Mulldiagramme on kasutatakse peamiselt arvtunnuste vahelise seose näitamiseks ja kuidas on need muutunud ajas.
import plotly.express as px andmed = px.data.gapminder() # Mulli suurus --> size # Mullide värv, värvid gruppide järgi --> color # Kuvatakse paksus kirjas --> hover_name # Animatsiooni tunnus --> animation_frame # Mulli maksimaale suurus --> size_max # x-telje andmete logaritmimine --> log_x # y-telje andmete skaala --> range_y # Kuvatud andmesiltide muutmine --> labels # Diagrammi pealkiri --> title dia = px.scatter(andmed, y="lifeExp", x="gdpPercap", size="pop", color="continent", hover_name="country", animation_frame="year", size_max=60, log_x=True, range_y=[20, 100], labels = {"lifeExp": "Keskmine eeldatav eluiga", "gdpPercap": "SKT, dollar", "continent": "Regioon", "pop": "Rahvaarv", "year": "Aasta"}, title="Keskmine eluiga ja SKT 1952 - 2007" ) dia.show()
🌌 Joonise näide (klõpsa lingil): http://kodu.ut.ee/~merka123/plotly/plotly8.html |