41 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

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