{"id":146,"date":"2020-12-20T14:35:10","date_gmt":"2020-12-20T14:35:10","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/?post_type=chapter&#038;p=146"},"modified":"2021-03-11T14:37:59","modified_gmt":"2021-03-11T14:37:59","slug":"jooniste-tegemine-numpy-uhemootmeliste-jarjenditega","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/chapter\/jooniste-tegemine-numpy-uhemootmeliste-jarjenditega\/","title":{"raw":"Jooniste tegemine NumPy \u00fchem\u00f5\u00f5tmeliste j\u00e4rjenditega","rendered":"Jooniste tegemine NumPy \u00fchem\u00f5\u00f5tmeliste j\u00e4rjenditega"},"content":{"raw":"<h2>Jooniste tegemine<\/h2>\r\nSageli on vaja andmeid ka visuaalselt esitada, et saada parem \u00fclevaade. Selleks saab kasutada erinevat t\u00fc\u00fcpi diagramme, n\u00e4iteks tulpdiagramm. Diagrammi t\u00fc\u00fcbi valik oleneb sellest, mis t\u00fc\u00fcpi on andmed ja mis on visualiseerimise eesm\u00e4rk. N\u00e4iteks on sobilik kasutada joondiagrammi, kui eesm\u00e4rgiks on n\u00e4idata mingi tunnuse muutust.\r\n\r\nPython pakub mitmeid mooduleid andmete visualiseerimiseks. Meie tutvustame \u00fcht k\u00f5ige populaarsemat moodulit Matplotlib ja moodulit Plotly, millega on v\u00f5imalik teha interaktiivseid jooniseid. Installeerimine need moodulid samamoodi nagu paigaldasime NumPy mooduli.\r\n<h2>Matplotlib<\/h2>\r\nSelleks, et saaks teha jooniseid Matplotlibiga, tuleb see esmalt importida.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import matplotlib.pyplot as plt\r\nimport numpy as np<\/pre>\r\n<span style=\"background-color: #f1c232\">\u00a0! <\/span><span style=\"background-color: #fff2cc\">\u00a0<strong>plt<\/strong> on levinud l\u00fchend Matplotlib kasutamiseks.<\/span>\r\n\r\nTeeme lihtsa joondiagrammi, millel on kaks telge (x-telg ja y-telg). Joondiagramme kasutatakse sageli selleks, et n\u00e4idata muutust ajas. Teeme joondiagrammi olmej\u00e4\u00e4tmete tekkimise kohta aastast 2010 kuni 2018 (allikas: Statistikaamet). Meil on andmed olmej\u00e4\u00e4tmete tekkimisest elaniku kohta kilogrammides j\u00e4rjendis <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">j\u00e4\u00e4tmed<\/code>. J\u00e4rjendis <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">aastad<\/code> on aastaarvud 2010-2018.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">j\u00e4\u00e4tmed = np.array([305, 301, 280, 293, 357, 359, 376, 390, 405])\r\naasta = np.array([2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018])\r\n\r\n# Lisame andmed joonisele\r\n# Esimene argument on x-telje andmed ja teine y-telje andmed\r\nplt.plot(aasta, j\u00e4\u00e4tmed)\r\n\r\n# Joonise kuvamiseks peab kindlasti kasutama show k\u00e4sku\r\nplt.show()<\/pre>\r\nJoonise saab lihtsalt salvestada pildina (PNG), kui kl\u00f5psata salvestamine nupul <img class=\"alignnone wp-image-259\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/unnamed.png\" alt=\"\" width=\"42\" height=\"42\" \/>.\r\n\r\n<img class=\"alignnone wp-image-257 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0.png\" alt=\"\" width=\"640\" height=\"480\" \/>\r\nJooniste eesm\u00e4rk on kuvada kontsentreeritult ja arusaadavalt infot. Eelneval joonisel on puudu joonise pealkiri ja telgede nimed. Ilma nendeta ei ole aru saada, mida t\u00e4psemalt joonisel kuvatakse. Lisame joonisele pealkirja ja ka telgedele nimed.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">j\u00e4\u00e4tmed = np.array([305, 301, 280, 293, 357, 359, 376, 390, 405])\r\naasta = np.array([2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018])\r\n\r\n# Lisame andmed joonisele\r\n# Esimene argument on x-telje andmed ja teine y-telje andmed\r\nplt.plot(aasta, j\u00e4\u00e4tmed)\r\n\r\n# x-telje pealkiri\r\nplt.xlabel(\"Aasta\")\r\n\r\n# y-telje pealkiri\r\nplt.ylabel(\"Olmej\u00e4\u00e4tmete tekkimine elaniku kohta, kg\")\r\n\r\n# Joonise pealkiri\r\nplt.title(\"Olmej\u00e4\u00e4tmete tekkimine 2010-2018\")\r\n\r\nplt.show()<\/pre>\r\n<img class=\"alignnone wp-image-256 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-1.png\" alt=\"\" width=\"640\" height=\"480\" \/>\r\n\r\nMatplotlib mooduliga on v\u00f5imalik teha erinevat t\u00fc\u00fcpi diagramme, n\u00e4iteks tulp- ja sektordiagramme, aga ka histogramme ja hajuvusdiagramme. Lisaks on palju v\u00f5imalusi joonise vormindamiseks ja stiili muutmiseks.\r\n\r\nJ\u00e4rgnevalt teeme tulpdiagrammi. Tulpdiagramme kasutatakse peamiselt siis, kui soovitakse v\u00f5rrelda erinevaid gruppe, n\u00e4iteks mehi ja naisi, riike jne. Sageli on andmed sel juhul diskreetsed (t\u00e4isarvud), n\u00e4iteks igasugused loenduse andmed. J\u00e4rgmises n\u00e4ites kasutame Eurostati andmeid interneti kasutuse kohta aastast 2019.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import matplotlib.pyplot as plt\r\nimport numpy as np\r\n\r\ninternet = np.array([99, 98, 98, 97, 95, 90, 86, 82])\r\nriigid = np.array([\"Island\", \"Norra\", \"Rootsi\", \"Taani\", \"Soome\", \"Eesti\", \"L\u00e4ti\", \"Leedu\"])\r\n\r\n# Loome tulpdiagrammi, mille x-teljel on riigid ja y-teljel interneti kasutus\r\n# Muudame tulpade v\u00e4rve, kasutada saab HEX v\u00e4rvi koode v\u00f5i v\u00e4rvi nimesid, nt \"red\".\r\n# Iga tulba saab eraldi v\u00e4rvida --&gt; j\u00e4rjend v\u00e4rvidega\r\nplt.bar(riigid, internet, color=[\"#ffcc99\", \"#ffccff\", \"#99ccff\", \"#99e699\", \"#cc99ff\", \"#ff5050\", \"#0066ff\", \"#33cc33\"])\r\n\r\n# x-telje pealkiri\r\nplt.xlabel(\"Riik\")\r\n\r\n# y-telje pealkiri\r\nplt.ylabel(\"Inimeste osakaal kogu rahvastikust, %\")\r\n\r\n# Joonise pealkiri\r\nplt.title(\"Interneti kasutamine Balti- ja P\u00f5hjamaades 2019\")\r\n\r\n# Joonise kuvamiseks peab kindlasti kasutama show k\u00e4sku\r\nplt.show()<\/pre>\r\n<img class=\"alignnone wp-image-258 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-2.png\" alt=\"\" width=\"640\" height=\"480\" \/>\r\n<h2>Plotly<\/h2>\r\nLisaks Matplotlibile on veel mitmeid Pythoni mooduleid, millega andmeid visualiseerida. M\u00f5ned neist pakuvad ka interaktiivsete jooniste tegemist. Uurime meiegi \u00fcht neist. Plotly on Pythoni moodul, millega saab teha interaktiivseid jooniseid. N\u00e4iteks on Plotly mooduli v\u00f5imalusi kasutanud koroonaviiruse <a href=\"https:\/\/biit.cs.ut.ee\/covid\/#\/trajectories\/Estonia?lang=et\">anal\u00fc\u00fcsivahendites<\/a>, mis on loodud Tartu \u00dclikooli teadlaste poolt. Rohkem v\u00f5ib uurida <a href=\"https:\/\/koroona.ut.ee\/\">koroona.ut.ee<\/a>.\r\n\r\nKirjutame programmi, mis eelnenud n\u00e4iteandmetel teeb interaktiivse joondiagrammi.\r\n\r\n<span style=\"background-color: #f1c232\">\u00a0! <\/span><span style=\"background-color: #fff2cc\">\u00a0Plotly jooniste tegemiseks on vajalik ka <strong>Pandas<\/strong> moodul paigaldada.<\/span>\r\n\r\nEsmalt peame lisaks NumPy moodulile importima ka Plotly mooduli.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import numpy as np\r\nimport plotly.graph_objects as go<\/pre>\r\nJ\u00e4rgnevalt kasutame samu andmeid olmej\u00e4\u00e4tmete kohta.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\"># Andmed\r\nj\u00e4\u00e4tmed = np.array([305, 301, 280, 293, 357, 359, 376, 390, 405])\r\naasta = np.array([2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018])\r\n\r\n# Kasutame Figure k\u00e4sku, mille argumendiks on joondiagramm\r\n# Lisame ka x- ja y-telje andmed\r\nfig = go.Figure(data=go.Scatter(x=aasta, y=j\u00e4\u00e4tmed))\r\n\r\n# Joonise kuvamiseks peab show k\u00e4sku kasutama\r\nfig.show()<\/pre>\r\nN\u00e4eme, et Plotly loob veebilehe joonise jaoks ja avab selle lokaalselt veebibrauseris. Seda veebilehte saab lisada teistele veebilehtedele v\u00f5i \u00fcles laadida selleks, et teised saaksid joonisele ligip\u00e4\u00e4su. Selleks salvesta avanenud veebileht enda arvutis ja lae HTML-i fail ja sellega kaasnevad failide kaust \u00fcles. Vaata toetavalt ka <em>Pythoni veebirakendus (Flask)<\/em> materjale.\r\n<div align=\"center\">\r\n<table class=\"no-lines aligncenter\">\r\n<tbody>\r\n<tr>\r\n<td style=\"background-color: #e9fce2;text-align: center\">\ud83c\udf0c <strong>Joonise n\u00e4ide<\/strong> (kl\u00f5psa lingil): <a href=\"http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly1.html\">http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly1.html<\/a><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\r\nLisame juurde ka pealkirjad telgedele ja joonisele.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">j\u00e4\u00e4tmed = np.array([305, 301, 280, 293, 357, 359, 376, 390, 405])\r\naasta = np.array([2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018])\r\n\r\nfig = go.Figure(data=go.Scatter(x=aasta, y=j\u00e4\u00e4tmed))\r\n\r\n# Lisame juurde k\u00e4su update_layout, mis lisab joonisele\r\n# pealkirja --&gt; parameeter title\r\n# x-telje pealkirja --&gt; parameeter xaxis_title\r\n# y-telje pealkirja --&gt; parameeter yaxis_title\r\nfig.update_layout(\r\n\ttitle=\"Olmej\u00e4\u00e4tmete tekkimine 2010-2018\",\r\n\txaxis_title=\"Aasta\",\r\n\tyaxis_title=\"Olmej\u00e4\u00e4tmete tekkimine elaniku kohta, kg\"\r\n\t)\r\n\r\nfig.show()<\/pre>\r\n<div align=\"center\">\r\n<table class=\"aligncenter\">\r\n<tbody>\r\n<tr>\r\n<td style=\"background-color: #e9fce2;text-align: center\">\ud83c\udf0c <strong>Joonise n\u00e4ide<\/strong> (kl\u00f5psa lingil): <a href=\"http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly2.html\">http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly2.html<\/a><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>\r\nKa Plotlyga on v\u00f5imalik teha erinevat t\u00fc\u00fcpi diagramme ja neid ka vastavalt oma \u00e4ran\u00e4gemise j\u00e4rgi kujundada. J\u00e4rgnevalt teeme lihtsa sektordiagrammi, mida kasutatakse peamiselt osakaalu esitamiseks protsentides, n\u00e4iteks kui palju metsa uuendatakse igas maakonnas kogu metsa uuendamisest. Samuti kasutame joonisel juba defineeritud v\u00e4rvipalette, mida pakub nii Plotly kui ka Matplotlib moodul. V\u00e4rvipalette on mugav kasutada siis, kui ei oska ise v\u00e4rve v\u00e4lja valida. V\u00e4rvipalettide kohta loe: <a href=\"https:\/\/plotly.com\/python\/builtin-colorscales\/\">https:\/\/plotly.com\/python\/builtin-colorscales\/<\/a>.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import numpy as np\r\nimport plotly.express as px\r\n\r\nmaakonnad = np.array([\"Hiiu maakond\",\r\n                 \t\"Viljandi maakond\",\r\n                 \t\"P\u00e4rnu maakond\",\r\n                 \t\"J\u00f5geva maakond\",\r\n                 \t\"Valga maakond\",\r\n                 \t\"Saare maakond\",\r\n                 \t\"L\u00e4\u00e4ne maakond\",\r\n                 \t\"Rapla maakond\",\r\n                 \t\"Harju maakond\",\r\n                 \t\"P\u00f5lva maakond\",\r\n                 \t\"V\u00f5ru maakond\",\r\n                 \t\"Ida-Viru maakond\",\r\n                 \t\"L\u00e4\u00e4ne-Viru maakond\",\r\n                 \t\"J\u00e4rva maakond\",\r\n                 \t\"Tartu maakond\"])\r\n\r\n# Metsa uuendamine hektarites\r\nmetsa_uuendamine = ([282.79,\r\n                \t685.84,\r\n                \t1153.38,\r\n                \t789.95,\r\n                \t581.72,\r\n                \t168.31,\r\n                \t255.63,\r\n                \t645.86,\r\n                \t641.09,\r\n                \t647.64,\r\n                \t622.19,\r\n                \t1284.23,\r\n                \t781.41,\r\n                \t614.54,\r\n                \t676.34])\r\n\r\n# Kasutame v\u00e4rvipalettidest Sequental palettide hulka kuuluvat Viridist --&gt;\r\n# parameeter color_discrete_sequence\r\nfig = px.pie(names=maakonnad, values=metsa_uuendamine, color_discrete_sequence=px.colors.sequential.Viridis)\r\n\r\n\r\nfig.update_layout(\r\n\ttitle=\"Metsa uuendamine 2019\"\r\n\t)\r\n\r\nfig.show()<\/pre>\r\n<div align=\"center\">\r\n<table class=\"aligncenter\">\r\n<tbody>\r\n<tr>\r\n<td style=\"background-color: #e9fce2;text-align: center\">\ud83c\udf0c <strong>Joonise n\u00e4ide<\/strong> (kl\u00f5psa lingil): <a href=\"http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly5.html\">http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly5.html<\/a><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\r\n<\/div>","rendered":"<h2>Jooniste tegemine<\/h2>\n<p>Sageli on vaja andmeid ka visuaalselt esitada, et saada parem \u00fclevaade. Selleks saab kasutada erinevat t\u00fc\u00fcpi diagramme, n\u00e4iteks tulpdiagramm. Diagrammi t\u00fc\u00fcbi valik oleneb sellest, mis t\u00fc\u00fcpi on andmed ja mis on visualiseerimise eesm\u00e4rk. N\u00e4iteks on sobilik kasutada joondiagrammi, kui eesm\u00e4rgiks on n\u00e4idata mingi tunnuse muutust.<\/p>\n<p>Python pakub mitmeid mooduleid andmete visualiseerimiseks. Meie tutvustame \u00fcht k\u00f5ige populaarsemat moodulit Matplotlib ja moodulit Plotly, millega on v\u00f5imalik teha interaktiivseid jooniseid. Installeerimine need moodulid samamoodi nagu paigaldasime NumPy mooduli.<\/p>\n<h2>Matplotlib<\/h2>\n<p>Selleks, et saaks teha jooniseid Matplotlibiga, tuleb see esmalt importida.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import matplotlib.pyplot as plt\r\nimport numpy as np<\/pre>\n<p><span style=\"background-color: #f1c232\">\u00a0! <\/span><span style=\"background-color: #fff2cc\">\u00a0<strong>plt<\/strong> on levinud l\u00fchend Matplotlib kasutamiseks.<\/span><\/p>\n<p>Teeme lihtsa joondiagrammi, millel on kaks telge (x-telg ja y-telg). Joondiagramme kasutatakse sageli selleks, et n\u00e4idata muutust ajas. Teeme joondiagrammi olmej\u00e4\u00e4tmete tekkimise kohta aastast 2010 kuni 2018 (allikas: Statistikaamet). Meil on andmed olmej\u00e4\u00e4tmete tekkimisest elaniku kohta kilogrammides j\u00e4rjendis <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">j\u00e4\u00e4tmed<\/code>. J\u00e4rjendis <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">aastad<\/code> on aastaarvud 2010-2018.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">j\u00e4\u00e4tmed = np.array([305, 301, 280, 293, 357, 359, 376, 390, 405])\r\naasta = np.array([2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018])\r\n\r\n# Lisame andmed joonisele\r\n# Esimene argument on x-telje andmed ja teine y-telje andmed\r\nplt.plot(aasta, j\u00e4\u00e4tmed)\r\n\r\n# Joonise kuvamiseks peab kindlasti kasutama show k\u00e4sku\r\nplt.show()<\/pre>\n<p>Joonise saab lihtsalt salvestada pildina (PNG), kui kl\u00f5psata salvestamine nupul <img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-259\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/unnamed.png\" alt=\"\" width=\"42\" height=\"42\" \/>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-257 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0.png\" alt=\"\" width=\"640\" height=\"480\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0.png 640w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-300x225.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-65x49.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-225x169.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-350x263.png 350w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><br \/>\nJooniste eesm\u00e4rk on kuvada kontsentreeritult ja arusaadavalt infot. Eelneval joonisel on puudu joonise pealkiri ja telgede nimed. Ilma nendeta ei ole aru saada, mida t\u00e4psemalt joonisel kuvatakse. Lisame joonisele pealkirja ja ka telgedele nimed.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">j\u00e4\u00e4tmed = np.array([305, 301, 280, 293, 357, 359, 376, 390, 405])\r\naasta = np.array([2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018])\r\n\r\n# Lisame andmed joonisele\r\n# Esimene argument on x-telje andmed ja teine y-telje andmed\r\nplt.plot(aasta, j\u00e4\u00e4tmed)\r\n\r\n# x-telje pealkiri\r\nplt.xlabel(\"Aasta\")\r\n\r\n# y-telje pealkiri\r\nplt.ylabel(\"Olmej\u00e4\u00e4tmete tekkimine elaniku kohta, kg\")\r\n\r\n# Joonise pealkiri\r\nplt.title(\"Olmej\u00e4\u00e4tmete tekkimine 2010-2018\")\r\n\r\nplt.show()<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-256 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-1.png\" alt=\"\" width=\"640\" height=\"480\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-1.png 640w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-1-300x225.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-1-65x49.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-1-225x169.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-1-350x263.png 350w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<p>Matplotlib mooduliga on v\u00f5imalik teha erinevat t\u00fc\u00fcpi diagramme, n\u00e4iteks tulp- ja sektordiagramme, aga ka histogramme ja hajuvusdiagramme. Lisaks on palju v\u00f5imalusi joonise vormindamiseks ja stiili muutmiseks.<\/p>\n<p>J\u00e4rgnevalt teeme tulpdiagrammi. Tulpdiagramme kasutatakse peamiselt siis, kui soovitakse v\u00f5rrelda erinevaid gruppe, n\u00e4iteks mehi ja naisi, riike jne. Sageli on andmed sel juhul diskreetsed (t\u00e4isarvud), n\u00e4iteks igasugused loenduse andmed. J\u00e4rgmises n\u00e4ites kasutame Eurostati andmeid interneti kasutuse kohta aastast 2019.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import matplotlib.pyplot as plt\r\nimport numpy as np\r\n\r\ninternet = np.array([99, 98, 98, 97, 95, 90, 86, 82])\r\nriigid = np.array([\"Island\", \"Norra\", \"Rootsi\", \"Taani\", \"Soome\", \"Eesti\", \"L\u00e4ti\", \"Leedu\"])\r\n\r\n# Loome tulpdiagrammi, mille x-teljel on riigid ja y-teljel interneti kasutus\r\n# Muudame tulpade v\u00e4rve, kasutada saab HEX v\u00e4rvi koode v\u00f5i v\u00e4rvi nimesid, nt \"red\".\r\n# Iga tulba saab eraldi v\u00e4rvida --&gt; j\u00e4rjend v\u00e4rvidega\r\nplt.bar(riigid, internet, color=[\"#ffcc99\", \"#ffccff\", \"#99ccff\", \"#99e699\", \"#cc99ff\", \"#ff5050\", \"#0066ff\", \"#33cc33\"])\r\n\r\n# x-telje pealkiri\r\nplt.xlabel(\"Riik\")\r\n\r\n# y-telje pealkiri\r\nplt.ylabel(\"Inimeste osakaal kogu rahvastikust, %\")\r\n\r\n# Joonise pealkiri\r\nplt.title(\"Interneti kasutamine Balti- ja P\u00f5hjamaades 2019\")\r\n\r\n# Joonise kuvamiseks peab kindlasti kasutama show k\u00e4sku\r\nplt.show()<\/pre>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-258 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-2.png\" alt=\"\" width=\"640\" height=\"480\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-2.png 640w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-2-300x225.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-2-65x49.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-2-225x169.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-2-350x263.png 350w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/p>\n<h2>Plotly<\/h2>\n<p>Lisaks Matplotlibile on veel mitmeid Pythoni mooduleid, millega andmeid visualiseerida. M\u00f5ned neist pakuvad ka interaktiivsete jooniste tegemist. Uurime meiegi \u00fcht neist. Plotly on Pythoni moodul, millega saab teha interaktiivseid jooniseid. N\u00e4iteks on Plotly mooduli v\u00f5imalusi kasutanud koroonaviiruse <a href=\"https:\/\/biit.cs.ut.ee\/covid\/#\/trajectories\/Estonia?lang=et\">anal\u00fc\u00fcsivahendites<\/a>, mis on loodud Tartu \u00dclikooli teadlaste poolt. Rohkem v\u00f5ib uurida <a href=\"https:\/\/koroona.ut.ee\/\">koroona.ut.ee<\/a>.<\/p>\n<p>Kirjutame programmi, mis eelnenud n\u00e4iteandmetel teeb interaktiivse joondiagrammi.<\/p>\n<p><span style=\"background-color: #f1c232\">\u00a0! <\/span><span style=\"background-color: #fff2cc\">\u00a0Plotly jooniste tegemiseks on vajalik ka <strong>Pandas<\/strong> moodul paigaldada.<\/span><\/p>\n<p>Esmalt peame lisaks NumPy moodulile importima ka Plotly mooduli.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import numpy as np\r\nimport plotly.graph_objects as go<\/pre>\n<p>J\u00e4rgnevalt kasutame samu andmeid olmej\u00e4\u00e4tmete kohta.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\"># Andmed\r\nj\u00e4\u00e4tmed = np.array([305, 301, 280, 293, 357, 359, 376, 390, 405])\r\naasta = np.array([2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018])\r\n\r\n# Kasutame Figure k\u00e4sku, mille argumendiks on joondiagramm\r\n# Lisame ka x- ja y-telje andmed\r\nfig = go.Figure(data=go.Scatter(x=aasta, y=j\u00e4\u00e4tmed))\r\n\r\n# Joonise kuvamiseks peab show k\u00e4sku kasutama\r\nfig.show()<\/pre>\n<p>N\u00e4eme, et Plotly loob veebilehe joonise jaoks ja avab selle lokaalselt veebibrauseris. Seda veebilehte saab lisada teistele veebilehtedele v\u00f5i \u00fcles laadida selleks, et teised saaksid joonisele ligip\u00e4\u00e4su. Selleks salvesta avanenud veebileht enda arvutis ja lae HTML-i fail ja sellega kaasnevad failide kaust \u00fcles. Vaata toetavalt ka <em>Pythoni veebirakendus (Flask)<\/em> materjale.<\/p>\n<div style=\"margin: auto;\">\n<table class=\"no-lines aligncenter\">\n<tbody>\n<tr>\n<td style=\"background-color: #e9fce2;text-align: center\">\ud83c\udf0c <strong>Joonise n\u00e4ide<\/strong> (kl\u00f5psa lingil): <a href=\"http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly1.html\">http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly1.html<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Lisame juurde ka pealkirjad telgedele ja joonisele.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">j\u00e4\u00e4tmed = np.array([305, 301, 280, 293, 357, 359, 376, 390, 405])\r\naasta = np.array([2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018])\r\n\r\nfig = go.Figure(data=go.Scatter(x=aasta, y=j\u00e4\u00e4tmed))\r\n\r\n# Lisame juurde k\u00e4su update_layout, mis lisab joonisele\r\n# pealkirja --&gt; parameeter title\r\n# x-telje pealkirja --&gt; parameeter xaxis_title\r\n# y-telje pealkirja --&gt; parameeter yaxis_title\r\nfig.update_layout(\r\n\ttitle=\"Olmej\u00e4\u00e4tmete tekkimine 2010-2018\",\r\n\txaxis_title=\"Aasta\",\r\n\tyaxis_title=\"Olmej\u00e4\u00e4tmete tekkimine elaniku kohta, kg\"\r\n\t)\r\n\r\nfig.show()<\/pre>\n<div style=\"margin: auto;\">\n<table class=\"aligncenter\">\n<tbody>\n<tr>\n<td style=\"background-color: #e9fce2;text-align: center\">\ud83c\udf0c <strong>Joonise n\u00e4ide<\/strong> (kl\u00f5psa lingil): <a href=\"http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly2.html\">http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly2.html<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<p>Ka Plotlyga on v\u00f5imalik teha erinevat t\u00fc\u00fcpi diagramme ja neid ka vastavalt oma \u00e4ran\u00e4gemise j\u00e4rgi kujundada. J\u00e4rgnevalt teeme lihtsa sektordiagrammi, mida kasutatakse peamiselt osakaalu esitamiseks protsentides, n\u00e4iteks kui palju metsa uuendatakse igas maakonnas kogu metsa uuendamisest. Samuti kasutame joonisel juba defineeritud v\u00e4rvipalette, mida pakub nii Plotly kui ka Matplotlib moodul. V\u00e4rvipalette on mugav kasutada siis, kui ei oska ise v\u00e4rve v\u00e4lja valida. V\u00e4rvipalettide kohta loe: <a href=\"https:\/\/plotly.com\/python\/builtin-colorscales\/\">https:\/\/plotly.com\/python\/builtin-colorscales\/<\/a>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import numpy as np\r\nimport plotly.express as px\r\n\r\nmaakonnad = np.array([\"Hiiu maakond\",\r\n                 \t\"Viljandi maakond\",\r\n                 \t\"P\u00e4rnu maakond\",\r\n                 \t\"J\u00f5geva maakond\",\r\n                 \t\"Valga maakond\",\r\n                 \t\"Saare maakond\",\r\n                 \t\"L\u00e4\u00e4ne maakond\",\r\n                 \t\"Rapla maakond\",\r\n                 \t\"Harju maakond\",\r\n                 \t\"P\u00f5lva maakond\",\r\n                 \t\"V\u00f5ru maakond\",\r\n                 \t\"Ida-Viru maakond\",\r\n                 \t\"L\u00e4\u00e4ne-Viru maakond\",\r\n                 \t\"J\u00e4rva maakond\",\r\n                 \t\"Tartu maakond\"])\r\n\r\n# Metsa uuendamine hektarites\r\nmetsa_uuendamine = ([282.79,\r\n                \t685.84,\r\n                \t1153.38,\r\n                \t789.95,\r\n                \t581.72,\r\n                \t168.31,\r\n                \t255.63,\r\n                \t645.86,\r\n                \t641.09,\r\n                \t647.64,\r\n                \t622.19,\r\n                \t1284.23,\r\n                \t781.41,\r\n                \t614.54,\r\n                \t676.34])\r\n\r\n# Kasutame v\u00e4rvipalettidest Sequental palettide hulka kuuluvat Viridist --&gt;\r\n# parameeter color_discrete_sequence\r\nfig = px.pie(names=maakonnad, values=metsa_uuendamine, color_discrete_sequence=px.colors.sequential.Viridis)\r\n\r\n\r\nfig.update_layout(\r\n\ttitle=\"Metsa uuendamine 2019\"\r\n\t)\r\n\r\nfig.show()<\/pre>\n<div style=\"margin: auto;\">\n<table class=\"aligncenter\">\n<tbody>\n<tr>\n<td style=\"background-color: #e9fce2;text-align: center\">\ud83c\udf0c <strong>Joonise n\u00e4ide<\/strong> (kl\u00f5psa lingil): <a href=\"http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly5.html\">http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly5.html<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n","protected":false},"author":16,"menu_order":5,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-146","chapter","type-chapter","status-publish","hentry"],"part":90,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/146","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters"}],"about":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/types\/chapter"}],"author":[{"embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/users\/16"}],"version-history":[{"count":6,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/146\/revisions"}],"predecessor-version":[{"id":741,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/146\/revisions\/741"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/parts\/90"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/146\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/media?parent=146"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapter-type?post=146"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/contributor?post=146"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/license?post=146"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}