{"id":661,"date":"2020-12-29T14:15:43","date_gmt":"2020-12-29T14:15:43","guid":{"rendered":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/?post_type=chapter&#038;p=661"},"modified":"2021-03-11T14:39:20","modified_gmt":"2021-03-11T14:39:20","slug":"jooniste-loomine-seeriaid-kasutades","status":"publish","type":"chapter","link":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/chapter\/jooniste-loomine-seeriaid-kasutades\/","title":{"raw":"Jooniste loomine seeriaid kasutades","rendered":"Jooniste loomine seeriaid kasutades"},"content":{"raw":"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.\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.\r\n<h2>Matplotlib<\/h2>\r\nPandase mooduli on integreeritud Matplotlib mooduliga. Selle tulemusel on jooniseid lihtsam koostada, sest Pandas oskab n\u00e4iteks 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.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import matplotlib.pyplot as plt<\/pre>\r\n<span style=\"background-color: #f1c232\">\u00a0! <span style=\"background-color: #fff2cc\">\u00a0<\/span><\/span><span style=\"background-color: #fff2cc\"><strong>plt<\/strong> on levinud l\u00fchend Matplotlib kasutamiseks.<\/span>\r\n\r\n<img class=\"alignnone wp-image-736 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/gif_install3.gif\" alt=\"\" width=\"480\" height=\"280\" \/>\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 seerias <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">j\u00e4\u00e4tmed<\/code>.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport matplotlib.pyplot as plt\r\n\r\n\r\nj\u00e4\u00e4tmed = pd.Series({2010: 305, 2011: 301, 2012: 280, 2013: 293, 2014: 357, 2015: 359, 2016: 376, 2017: 390, 2018: 405})\r\n\r\n# x- ja y- telje andmed m\u00e4\u00e4ratakse automaatselt\r\n# x-telje v\u00e4\u00e4rtused on vaikimisi sildid\r\n# y- teljele lisatakse v\u00e4\u00e4rtused\r\nj\u00e4\u00e4tmed.plot.line()\r\n\r\n# Joonise kuvamiseks peab kasutama show() Matplotlib moodulist\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=\"45\" height=\"45\" \/>.\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\n\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. Selleks saab <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">line<\/code> funktsiooni v\u00e4ljakutsel lisada parameetritele <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">xlabel<\/code> (x-telje pealkiri), <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">ylabel<\/code> (y-telje pealkiri) ja <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">title<\/code> (joonise pealkiri) sobilikud v\u00e4\u00e4rtused.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport matplotlib.pyplot as plt\r\n\r\n\r\nj\u00e4\u00e4tmed = pd.Series({2010: 305, 2011: 301, 2012: 280, 2013: 293, 2014: 357, 2015: 359, 2016: 376, 2017: 390, 2018: 405})\r\n\r\nj\u00e4\u00e4tmed.plot.line(xlabel=\"Aastad\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ylabel=\"Olmej\u00e4\u00e4tmete tekkimine elaniku kohta, kg\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 title=\"Olmej\u00e4\u00e4tmete tekkimine 2010-2018\")\r\n\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\n&nbsp;\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. Seeria loome aga NumPy j\u00e4rjendeid kasutades.\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\nimport pandas as pd\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\ninternet_riigid = pd.Series(internet, index=riigid)\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\nv\u00e4rvid = [\"#ffcc99\", \"#ffccff\", \"#99ccff\", \"#99e699\", \"#cc99ff\", \"#ff5050\", \"#0066ff\", \"#33cc33\"]\r\ninternet_riigid.plot.bar(xlabel=\"Riik\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ylabel=\"Inimeste osakaal kogu rahvastikust, %\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 title=\"Interneti kasutamine Balti- ja P\u00f5hjamaades 2019\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 color=v\u00e4rvid)\r\n\r\n# Joonise kuvamiseks peab kindlasti kasutama show k\u00e4sku\r\nplt.show()<\/pre>\r\n<img class=\"alignnone wp-image-664 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-5.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\nEsmalt peame installeerima ja importima ka Plotly mooduli.\r\n\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\">import pandas as pd\r\nimport plotly.graph_objects as go\r\n\r\nj\u00e4\u00e4tmed = pd.Series({2010: 305, 2011: 301, 2012: 280, 2013: 293, 2014: 357, 2015: 359, 2016: 376, 2017: 390, 2018: 405})\r\n\r\n# Lisame x- ja y-telje andmed\r\nfig = go.Figure(data=go.Scatter(x=j\u00e4\u00e4tmed.index, y=j\u00e4\u00e4tmed.values))\r\n\r\n# Joonise kuvamiseks peab show k\u00e4sku kasutama\r\nfig.show()<\/pre>\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\nLisame juurde ka pealkirjad telgedele ja joonisele.\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport plotly.graph_objects as go\r\n\r\nj\u00e4\u00e4tmed = pd.Series({2010: 305, 2011: 301, 2012: 280, 2013: 293, 2014: 357, 2015: 359, 2016: 376, 2017: 390, 2018: 405})\r\n\r\n# Lisame x- ja y-telje andmed\r\nfig = go.Figure(data=go.Scatter(x=j\u00e4\u00e4tmed.index, y=j\u00e4\u00e4tmed.values))\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    title=\"Olmej\u00e4\u00e4tmete tekkimine 2010-2018\",\r\n    xaxis_title=\"Aasta\",\r\n    yaxis_title=\"Olmej\u00e4\u00e4tmete tekkimine elaniku kohta, kg\"\r\n    )\r\n\r\nfig.show()<\/pre>\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\/plotly2.html\">http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly2.html<\/a><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>\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 (allikas: Statistikaamet). 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>. Pandase seeria loome NumPy j\u00e4rjendeid kasutades (tegelikult v\u00f5ib NumPy j\u00e4rjendeid kasutada ka otse jooniste tegemiseks, ilma seeriaks loomiseta).\r\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport numpy as np\r\nimport plotly.express as px\r\n\r\nmaakonnad = np.array([\"Hiiu maakond\",\r\n                    \"Viljandi maakond\",\r\n                    \"P\u00e4rnu maakond\",\r\n                    \"J\u00f5geva maakond\",\r\n                    \"Valga maakond\",\r\n                    \"Saare maakond\",\r\n                    \"L\u00e4\u00e4ne maakond\",\r\n                    \"Rapla maakond\",\r\n                    \"Harju maakond\",\r\n                    \"P\u00f5lva maakond\",\r\n                    \"V\u00f5ru maakond\",\r\n                    \"Ida-Viru maakond\",\r\n                    \"L\u00e4\u00e4ne-Viru maakond\",\r\n                    \"J\u00e4rva maakond\",\r\n                    \"Tartu maakond\"])\r\n\r\n# Metsa uuendamine hektarites\r\nmetsa_uuendamine = ([282.79,\r\n                    685.84,\r\n                    1153.38,\r\n                    789.95,\r\n                    581.72,\r\n                    168.31,\r\n                    255.63,\r\n                    645.86,\r\n                    641.09,\r\n                    647.64,\r\n                    622.19,\r\n                    1284.23,\r\n                    781.41,\r\n                    614.54,\r\n                    676.34])\r\n\r\nseeria = pd.Series(metsa_uuendamine, index=maakonnad)\r\n\r\n# Kasutame v\u00e4rvipalettidest Sequental palettide hulka kuuluvat Viridist --&gt;\r\n# parameeter color_discrete_sequence\r\nfig = px.pie(names=seeria.index, values=seeria.values, color_discrete_sequence=px.colors.sequential.Viridis)\r\n\r\n\r\nfig.update_layout(\r\n    title=\"Metsa uuendamine 2019\"\r\n    )\r\n\r\nfig.show()<\/pre>\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\/plotly5.html\">http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly5.html<\/a><\/td>\r\n<\/tr>\r\n<\/tbody>\r\n<\/table>","rendered":"<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.<\/p>\n<h2>Matplotlib<\/h2>\n<p>Pandase mooduli on integreeritud Matplotlib mooduliga. Selle tulemusel on jooniseid lihtsam koostada, sest Pandas oskab n\u00e4iteks 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.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import matplotlib.pyplot as plt<\/pre>\n<p><span style=\"background-color: #f1c232\">\u00a0! <span style=\"background-color: #fff2cc\">\u00a0<\/span><\/span><span style=\"background-color: #fff2cc\"><strong>plt<\/strong> on levinud l\u00fchend Matplotlib kasutamiseks.<\/span><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-736 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/gif_install3.gif\" alt=\"\" width=\"480\" height=\"280\" \/><\/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 seerias <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">j\u00e4\u00e4tmed<\/code>.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport matplotlib.pyplot as plt\r\n\r\n\r\nj\u00e4\u00e4tmed = pd.Series({2010: 305, 2011: 301, 2012: 280, 2013: 293, 2014: 357, 2015: 359, 2016: 376, 2017: 390, 2018: 405})\r\n\r\n# x- ja y- telje andmed m\u00e4\u00e4ratakse automaatselt\r\n# x-telje v\u00e4\u00e4rtused on vaikimisi sildid\r\n# y- teljele lisatakse v\u00e4\u00e4rtused\r\nj\u00e4\u00e4tmed.plot.line()\r\n\r\n# Joonise kuvamiseks peab kasutama show() Matplotlib moodulist\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=\"45\" height=\"45\" \/>.<\/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\" \/><\/p>\n<p>Jooniste 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. Selleks saab <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">line<\/code> funktsiooni v\u00e4ljakutsel lisada parameetritele <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">xlabel<\/code> (x-telje pealkiri), <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">ylabel<\/code> (y-telje pealkiri) ja <code class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\">title<\/code> (joonise pealkiri) sobilikud v\u00e4\u00e4rtused.<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport matplotlib.pyplot as plt\r\n\r\n\r\nj\u00e4\u00e4tmed = pd.Series({2010: 305, 2011: 301, 2012: 280, 2013: 293, 2014: 357, 2015: 359, 2016: 376, 2017: 390, 2018: 405})\r\n\r\nj\u00e4\u00e4tmed.plot.line(xlabel=\"Aastad\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ylabel=\"Olmej\u00e4\u00e4tmete tekkimine elaniku kohta, kg\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 title=\"Olmej\u00e4\u00e4tmete tekkimine 2010-2018\")\r\n\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>&nbsp;<\/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. Seeria loome aga NumPy j\u00e4rjendeid kasutades.<\/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\nimport pandas as pd\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\ninternet_riigid = pd.Series(internet, index=riigid)\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\nv\u00e4rvid = [\"#ffcc99\", \"#ffccff\", \"#99ccff\", \"#99e699\", \"#cc99ff\", \"#ff5050\", \"#0066ff\", \"#33cc33\"]\r\ninternet_riigid.plot.bar(xlabel=\"Riik\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 ylabel=\"Inimeste osakaal kogu rahvastikust, %\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 title=\"Interneti kasutamine Balti- ja P\u00f5hjamaades 2019\",\r\n\u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 \u00a0 color=v\u00e4rvid)\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-664 size-full\" src=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-5.png\" alt=\"\" width=\"640\" height=\"480\" srcset=\"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-5.png 640w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-5-300x225.png 300w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-5-65x49.png 65w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-5-225x169.png 225w, https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-content\/uploads\/sites\/18\/2020\/12\/pasted-image-0-5-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>Esmalt peame installeerima ja importima ka Plotly mooduli.<\/p>\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\">import pandas as pd\r\nimport plotly.graph_objects as go\r\n\r\nj\u00e4\u00e4tmed = pd.Series({2010: 305, 2011: 301, 2012: 280, 2013: 293, 2014: 357, 2015: 359, 2016: 376, 2017: 390, 2018: 405})\r\n\r\n# Lisame x- ja y-telje andmed\r\nfig = go.Figure(data=go.Scatter(x=j\u00e4\u00e4tmed.index, y=j\u00e4\u00e4tmed.values))\r\n\r\n# Joonise kuvamiseks peab show k\u00e4sku kasutama\r\nfig.show()<\/pre>\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<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\">import pandas as pd\r\nimport plotly.graph_objects as go\r\n\r\nj\u00e4\u00e4tmed = pd.Series({2010: 305, 2011: 301, 2012: 280, 2013: 293, 2014: 357, 2015: 359, 2016: 376, 2017: 390, 2018: 405})\r\n\r\n# Lisame x- ja y-telje andmed\r\nfig = go.Figure(data=go.Scatter(x=j\u00e4\u00e4tmed.index, y=j\u00e4\u00e4tmed.values))\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    title=\"Olmej\u00e4\u00e4tmete tekkimine 2010-2018\",\r\n    xaxis_title=\"Aasta\",\r\n    yaxis_title=\"Olmej\u00e4\u00e4tmete tekkimine elaniku kohta, kg\"\r\n    )\r\n\r\nfig.show()<\/pre>\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\/plotly2.html\">http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly2.html<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\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 (allikas: Statistikaamet). 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>. Pandase seeria loome NumPy j\u00e4rjendeid kasutades (tegelikult v\u00f5ib NumPy j\u00e4rjendeid kasutada ka otse jooniste tegemiseks, ilma seeriaks loomiseta).<\/p>\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"python\" data-enlighter-theme=\"bootstrap4\" data-enlighter-linenumbers=\"false\">import pandas as pd\r\nimport numpy as np\r\nimport plotly.express as px\r\n\r\nmaakonnad = np.array([\"Hiiu maakond\",\r\n                    \"Viljandi maakond\",\r\n                    \"P\u00e4rnu maakond\",\r\n                    \"J\u00f5geva maakond\",\r\n                    \"Valga maakond\",\r\n                    \"Saare maakond\",\r\n                    \"L\u00e4\u00e4ne maakond\",\r\n                    \"Rapla maakond\",\r\n                    \"Harju maakond\",\r\n                    \"P\u00f5lva maakond\",\r\n                    \"V\u00f5ru maakond\",\r\n                    \"Ida-Viru maakond\",\r\n                    \"L\u00e4\u00e4ne-Viru maakond\",\r\n                    \"J\u00e4rva maakond\",\r\n                    \"Tartu maakond\"])\r\n\r\n# Metsa uuendamine hektarites\r\nmetsa_uuendamine = ([282.79,\r\n                    685.84,\r\n                    1153.38,\r\n                    789.95,\r\n                    581.72,\r\n                    168.31,\r\n                    255.63,\r\n                    645.86,\r\n                    641.09,\r\n                    647.64,\r\n                    622.19,\r\n                    1284.23,\r\n                    781.41,\r\n                    614.54,\r\n                    676.34])\r\n\r\nseeria = pd.Series(metsa_uuendamine, index=maakonnad)\r\n\r\n# Kasutame v\u00e4rvipalettidest Sequental palettide hulka kuuluvat Viridist --&gt;\r\n# parameeter color_discrete_sequence\r\nfig = px.pie(names=seeria.index, values=seeria.values, color_discrete_sequence=px.colors.sequential.Viridis)\r\n\r\n\r\nfig.update_layout(\r\n    title=\"Metsa uuendamine 2019\"\r\n    )\r\n\r\nfig.show()<\/pre>\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\/plotly5.html\">http:\/\/kodu.ut.ee\/~merka123\/plotly\/plotly5.html<\/a><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n","protected":false},"author":16,"menu_order":6,"template":"","meta":{"pb_show_title":"on","pb_short_title":"","pb_subtitle":"","pb_authors":[],"pb_section_license":""},"chapter-type":[],"contributor":[],"license":[],"class_list":["post-661","chapter","type-chapter","status-publish","hentry"],"part":93,"_links":{"self":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/661","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":4,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/661\/revisions"}],"predecessor-version":[{"id":742,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/661\/revisions\/742"}],"part":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/parts\/93"}],"metadata":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapters\/661\/metadata\/"}],"wp:attachment":[{"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/media?parent=661"}],"wp:term":[{"taxonomy":"chapter-type","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/pressbooks\/v2\/chapter-type?post=661"},{"taxonomy":"contributor","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/contributor?post=661"},{"taxonomy":"license","embeddable":true,"href":"https:\/\/web.htk.tlu.ee\/digitaru\/tarkvara2\/wp-json\/wp\/v2\/license?post=661"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}