{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Interaktiva kartor" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "I det tidigare exemplet ritade vi en karta, som snabbt gav en bra helhetsbild över världens utsläppsfördelning. På kartan var nationerna färgade, så att mörkare färg innebar större utsläpp. Hur gör vi om vi vill kunna använda kartan för att se utsläppen eller annan statistik mer exakt?\n", "\n", "\n", "I den här övningen ska vi göra en karta i samma stil, men vi ska också lägga till interaktiva egenskaper. Vi gör en sådan karta, som visar information om området i en pop-up-ruta när vi för pekaren över dem. För omväxlingens skull ska vi använda andra exempeldata än förra gången. Vi undersöker denna gång Finlands kommuner och pensionärernas andel av befolkningen.\n", "\n", "\n", "Finlands kommungränser kan laddas ned från [Lantmäteriverkets databank](https://tiedostopalvelu.maanmittauslaitos.fi/tp/kartta). \n", "Kartfilen hittas med namnet \"SuomenKuntajako_2020_250k.mid\".\n", "\n", "Pensionärernas andel av befolkningen är också öppna data, och finns tillgängligt på [Statistikcentralens hemsida](https://pxnet2.stat.fi/PXWeb/pxweb/fi/Kuntien_avainluvut/). Vi har sparat och förberett filen lite för att den ska passa detta exempel bättre. Den hittas i datamappen som hör till detta dokument, under namnet \"elakelaisten_osuus_2018_kuntajako_2020.csv\". Namnet antyder att statistiken är från 2018, men den återges enligt kommunindelningen från 2020." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Läsa in data" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Vi påbörjar övningen likadant som tidigare, genom att ladda in datafilerna och förena dem till ett dataset. Vi använder funktionspaketen [pandas](https://pandas.pydata.org/) och [geopandas](https://geopandas.org/) för att göra detta." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", " | gml_id | \n", "natcode | \n", "namefin | \n", "nameswe | \n", "landarea | \n", "freshwarea | \n", "seawarea | \n", "totalarea | \n", "geometry | \n", "
---|---|---|---|---|---|---|---|---|---|
0 | \n", "1601100430 | \n", "691 | \n", "Reisjärvi | \n", "Reisjärvi | \n", "474.60 | \n", "28.74 | \n", "0.00 | \n", "503.34 | \n", "MULTIPOLYGON (((418701.443 7055306.898, 418485... | \n", "
1 | \n", "1601100624 | \n", "853 | \n", "Turku | \n", "Åbo | \n", "245.66 | \n", "3.47 | \n", "57.22 | \n", "306.35 | \n", "POLYGON ((249073.975 6725828.546, 248775.530 6... | \n", "
2 | \n", "1601100110 | \n", "318 | \n", "Kökar | \n", "Kökar | \n", "63.57 | \n", "0.43 | \n", "2101.02 | \n", "2165.02 | \n", "POLYGON ((172798.744 6674623.732, 173415.386 6... | \n", "
3 | \n", "1601100668 | \n", "859 | \n", "Tyrnävä | \n", "Tyrnävä | \n", "491.82 | \n", "3.04 | \n", "0.00 | \n", "494.86 | \n", "POLYGON ((440372.786 7197460.702, 440107.431 7... | \n", "
4 | \n", "1601100521 | \n", "747 | \n", "Siikainen | \n", "Siikainen | \n", "463.29 | \n", "28.02 | \n", "0.00 | \n", "491.31 | \n", "POLYGON ((236801.933 6882124.138, 236897.467 6... | \n", "
\n", " | alue | \n", "elakelaisten_osuus | \n", "
---|---|---|
0 | \n", "Akaa | \n", "27.3 | \n", "
1 | \n", "Alajärvi | \n", "33.0 | \n", "
2 | \n", "Alavieska | \n", "28.7 | \n", "
3 | \n", "Alavus | \n", "32.7 | \n", "
4 | \n", "Asikkala | \n", "37.2 | \n", "
\n", " | gml_id | \n", "natcode | \n", "namefin | \n", "nameswe | \n", "landarea | \n", "freshwarea | \n", "seawarea | \n", "totalarea | \n", "geometry | \n", "alue | \n", "elakelaisten_osuus | \n", "
---|---|---|---|---|---|---|---|---|---|---|---|
0 | \n", "1601100430 | \n", "691 | \n", "Reisjärvi | \n", "Reisjärvi | \n", "474.60 | \n", "28.74 | \n", "0.00 | \n", "503.34 | \n", "MULTIPOLYGON (((418701.443 7055306.898, 418485... | \n", "Reisjärvi | \n", "32.0 | \n", "
1 | \n", "1601100624 | \n", "853 | \n", "Turku | \n", "Åbo | \n", "245.66 | \n", "3.47 | \n", "57.22 | \n", "306.35 | \n", "POLYGON ((249073.975 6725828.546, 248775.530 6... | \n", "Turku | \n", "24.2 | \n", "
2 | \n", "1601100110 | \n", "318 | \n", "Kökar | \n", "Kökar | \n", "63.57 | \n", "0.43 | \n", "2101.02 | \n", "2165.02 | \n", "POLYGON ((172798.744 6674623.732, 173415.386 6... | \n", "Kökar | \n", "36.4 | \n", "
3 | \n", "1601100668 | \n", "859 | \n", "Tyrnävä | \n", "Tyrnävä | \n", "491.82 | \n", "3.04 | \n", "0.00 | \n", "494.86 | \n", "POLYGON ((440372.786 7197460.702, 440107.431 7... | \n", "Tyrnävä | \n", "16.2 | \n", "
4 | \n", "1601100521 | \n", "747 | \n", "Siikainen | \n", "Siikainen | \n", "463.29 | \n", "28.02 | \n", "0.00 | \n", "491.31 | \n", "POLYGON ((236801.933 6882124.138, 236897.467 6... | \n", "Siikainen | \n", "41.9 | \n", "
\\n\"+\n", " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", " \"
\\n\"+\n", " \"\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"
\\n\"+\n",
" \"\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"
\\n\"+\n \"\\n\"+\n", " \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n", " \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n", " \"
\\n\"+\n", " \"\\n\"+\n",
" \"from bokeh.resources import INLINE\\n\"+\n",
" \"output_notebook(resources=INLINE)\\n\"+\n",
" \"
\\n\"+\n",
" \"\\n\"+\n \"BokehJS does not appear to have successfully loaded. If loading BokehJS from CDN, this \\n\"+\n \"may be due to a slow or bad network connection. Possible fixes:\\n\"+\n \"
\\n\"+\n \"\\n\"+\n \"from bokeh.resources import INLINE\\n\"+\n \"output_notebook(resources=INLINE)\\n\"+\n \"
\\n\"+\n \"