{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# ONS Boundaries - Choropleth Demo\n",
"\n",
"Fragments associated with grabbing boundaries data.\n",
"\n",
"*Note that a full demo using all local authority ditricts kills MyBinder demo.*"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Local Authority Districts (December 2016) Generalised Clipped Boundaries in the UK\n",
"Get the boundaries for Local Authority areas:\n",
"\n",
"http://geoportal.statistics.gov.uk/datasets/7ff28788e1e640de8150fb8f35703f6e_2"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
objectid
\n",
"
lad16cd
\n",
"
lad16nm
\n",
"
lad16nmw
\n",
"
bng_e
\n",
"
bng_n
\n",
"
long
\n",
"
lat
\n",
"
st_areasha
\n",
"
st_lengths
\n",
"
geometry
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1
\n",
"
E06000001
\n",
"
Hartlepool
\n",
"
None
\n",
"
447157
\n",
"
531476
\n",
"
-1.27023
\n",
"
54.676159
\n",
"
9.359786e+07
\n",
"
69382.685924
\n",
"
(POLYGON ((447097.0010000002 537152.0011, 4472...
\n",
"
\n",
"
\n",
"
1
\n",
"
2
\n",
"
E06000002
\n",
"
Middlesbrough
\n",
"
None
\n",
"
451141
\n",
"
516887
\n",
"
-1.21099
\n",
"
54.544670
\n",
"
5.387900e+07
\n",
"
42085.584812
\n",
"
(POLYGON ((449861.8997999998 521260.6998999994...
\n",
"
\n",
"
\n",
"
2
\n",
"
3
\n",
"
E06000003
\n",
"
Redcar and Cleveland
\n",
"
None
\n",
"
464359
\n",
"
519597
\n",
"
-1.00611
\n",
"
54.567520
\n",
"
2.448388e+08
\n",
"
96189.660709
\n",
"
(POLYGON ((455776.7005000003 528322.4985000007...
\n",
"
\n",
"
\n",
"
3
\n",
"
4
\n",
"
E06000004
\n",
"
Stockton-on-Tees
\n",
"
None
\n",
"
444937
\n",
"
518183
\n",
"
-1.30669
\n",
"
54.556911
\n",
"
2.049366e+08
\n",
"
115439.477112
\n",
"
(POLYGON ((444126.0993999997 528005.7992000002...
\n",
"
\n",
"
\n",
"
4
\n",
"
10
\n",
"
E06000010
\n",
"
Kingston upon Hull, City of
\n",
"
None
\n",
"
511894
\n",
"
431716
\n",
"
-0.30380
\n",
"
53.769791
\n",
"
7.145577e+07
\n",
"
63330.240277
\n",
"
(POLYGON ((510966.6001000004 436533.0030000005...
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" objectid lad16cd lad16nm lad16nmw bng_e bng_n \\\n",
"0 1 E06000001 Hartlepool None 447157 531476 \n",
"1 2 E06000002 Middlesbrough None 451141 516887 \n",
"2 3 E06000003 Redcar and Cleveland None 464359 519597 \n",
"3 4 E06000004 Stockton-on-Tees None 444937 518183 \n",
"4 10 E06000010 Kingston upon Hull, City of None 511894 431716 \n",
"\n",
" long lat st_areasha st_lengths \\\n",
"0 -1.27023 54.676159 9.359786e+07 69382.685924 \n",
"1 -1.21099 54.544670 5.387900e+07 42085.584812 \n",
"2 -1.00611 54.567520 2.448388e+08 96189.660709 \n",
"3 -1.30669 54.556911 2.049366e+08 115439.477112 \n",
"4 -0.30380 53.769791 7.145577e+07 63330.240277 \n",
"\n",
" geometry \n",
"0 (POLYGON ((447097.0010000002 537152.0011, 4472... \n",
"1 (POLYGON ((449861.8997999998 521260.6998999994... \n",
"2 (POLYGON ((455776.7005000003 528322.4985000007... \n",
"3 (POLYGON ((444126.0993999997 528005.7992000002... \n",
"4 (POLYGON ((510966.6001000004 436533.0030000005... "
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import geopandas\n",
"\n",
"#From the downloads area of the page, grab the link for the shapefile download\n",
"url='https://opendata.arcgis.com/datasets/7ff28788e1e640de8150fb8f35703f6e_2.zip?outSR=%7B%22wkid%22%3A27700%2C%22latestWkid%22%3A27700%7D'\n",
"gdf = geopandas.read_file(url)\n",
"\n",
"#The .head() method limits the display of the table to the top few rows;\n",
"# THings like .head(20) to preview first 20 rows also works\n",
"gdf.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can check the projection:"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'proj': 'tmerc',\n",
" 'lat_0': 49,\n",
" 'lon_0': -2,\n",
" 'k': 0.9996012717,\n",
" 'x_0': 400000,\n",
" 'y_0': -100000,\n",
" 'datum': 'OSGB36',\n",
" 'units': 'm',\n",
" 'no_defs': True}"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"gdf.crs"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"And preview the shapefile:"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {},
"outputs": [],
"source": [
"gdf.plot();"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can easily add a title to the plot:"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"#Turn the plot into soemthing we can reference\n",
"ax = gdf.plot()\n",
"\n",
"#Add a title\n",
"ax.set_title('Local Authorities in the UK')\n",
"\n",
"#Turn off axes\n",
"ax.axis('off');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### Interactive Maps\n",
"\n",
"Preview shapes from the first few rows using the `folium` package:"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
],
"text/plain": [
""
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import folium\n",
"\n",
"m = folium.Map(max_zoom=6, location=[53.9, 0.0])\n",
"folium.GeoJson(gdf.head()).add_to(m)\n",
"m"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [],
"source": [
"#You can download a copy of the actual boundary data file if required\n",
"# !wget https://opendata.arcgis.com/datasets/52182cdda64d4b15984f6446ca7ee7fd_1.zip?outSR=%7B%22wkid%22%3A27700%2C%22latestWkid%22%3A27700%7D -O wards_fullextent.zip\n",
"# !unzip wards_fullextent.zip"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Grab Data to Map Against\n",
"\n",
"Let's get some data to use as the basis of a choropleth map.\n",
"\n",
"We can use something from deprivation indices (we really should check we grabbed boundary files for the correct period...)."
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [],
"source": [
"#https://www.gov.uk/government/statistics/english-indices-of-deprivation-2015\n",
"#File 10: local authority district summaries\n",
"\n",
"data_url = 'https://assets.publishing.service.gov.uk/government/uploads/system/uploads/attachment_data/file/464464/File_10_ID2015_Local_Authority_District_Summaries.xlsx'"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Download the data into a `pandas` dataframe. The orginal file is an Excel spreadsheet with mutliple sheets, so let's load them all and preview the sheetnames:"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Notes\n",
"IMD\n",
"Income\n",
"Employment\n",
"Education\n",
"Health\n",
"Crime\n",
"Barriers\n",
"Living\n",
"IDACI\n",
"IDAOPI\n"
]
}
],
"source": [
"import pandas as pd\n",
"\n",
"df = pd.read_excel(data_url, sheet_name=None)\n",
"\n",
"for k in df.keys():\n",
" print(k)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We an the preview the data in a single sheet:"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Local Authority District code (2013)
\n",
"
Local Authority District name (2013)
\n",
"
Education, Skills and Training - Average rank
\n",
"
Education, Skills and Training - Rank of average rank
\n",
"
Education, Skills and Training - Average score
\n",
"
Education, Skills and Training - Rank of average score
\n",
"
Education, Skills and Training - Proportion of LSOAs in most deprived 10% nationally
\n",
"
Education, Skills and Training - Rank of proportion of LSOAs in most deprived 10% nationally
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
E06000001
\n",
"
Hartlepool
\n",
"
20101.48
\n",
"
72
\n",
"
30.510
\n",
"
47
\n",
"
0.2069
\n",
"
37
\n",
"
\n",
"
\n",
"
1
\n",
"
E06000002
\n",
"
Middlesbrough
\n",
"
22728.01
\n",
"
24
\n",
"
40.640
\n",
"
3
\n",
"
0.4419
\n",
"
1
\n",
"
\n",
"
\n",
"
2
\n",
"
E06000003
\n",
"
Redcar and Cleveland
\n",
"
19185.28
\n",
"
95
\n",
"
27.875
\n",
"
71
\n",
"
0.1818
\n",
"
54
\n",
"
\n",
"
\n",
"
3
\n",
"
E06000004
\n",
"
Stockton-on-Tees
\n",
"
16660.09
\n",
"
150
\n",
"
24.637
\n",
"
110
\n",
"
0.1750
\n",
"
59
\n",
"
\n",
"
\n",
"
4
\n",
"
E06000005
\n",
"
Darlington
\n",
"
16385.06
\n",
"
155
\n",
"
22.569
\n",
"
129
\n",
"
0.1385
\n",
"
75
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" Local Authority District code (2013) Local Authority District name (2013) \\\n",
"0 E06000001 Hartlepool \n",
"1 E06000002 Middlesbrough \n",
"2 E06000003 Redcar and Cleveland \n",
"3 E06000004 Stockton-on-Tees \n",
"4 E06000005 Darlington \n",
"\n",
" Education, Skills and Training - Average rank \\\n",
"0 20101.48 \n",
"1 22728.01 \n",
"2 19185.28 \n",
"3 16660.09 \n",
"4 16385.06 \n",
"\n",
" Education, Skills and Training - Rank of average rank \\\n",
"0 72 \n",
"1 24 \n",
"2 95 \n",
"3 150 \n",
"4 155 \n",
"\n",
" Education, Skills and Training - Average score \\\n",
"0 30.510 \n",
"1 40.640 \n",
"2 27.875 \n",
"3 24.637 \n",
"4 22.569 \n",
"\n",
" Education, Skills and Training - Rank of average score \\\n",
"0 47 \n",
"1 3 \n",
"2 71 \n",
"3 110 \n",
"4 129 \n",
"\n",
" Education, Skills and Training - Proportion of LSOAs in most deprived 10% nationally \\\n",
"0 0.2069 \n",
"1 0.4419 \n",
"2 0.1818 \n",
"3 0.1750 \n",
"4 0.1385 \n",
"\n",
" Education, Skills and Training - Rank of proportion of LSOAs in most deprived 10% nationally \n",
"0 37 \n",
"1 1 \n",
"2 54 \n",
"3 59 \n",
"4 75 "
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"df['Education'].head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Generate a Choropleth Map\n",
"\n",
"It's easy enough to combine data from a `pandas` data frame with shape data in a `geopandas` dataframe.\n",
"\n",
"The `geopandas` dataframe is used to create a geojson file that the `folium` package can render. Each column name in the `geopandas` dataframe is mapped onto a corresponding `feature.properties.COLUMN_NAME` in the created geojson file. (I'm not sure offhand how column names that include space or punctuation characters are handled: simple column names are easiest.)\n",
"\n",
"The data file is also passed in and the key and data columns identified as `columns=[KEYCOL, DATACOL]`.\n",
"\n",
"The rendered choropleth map is then coloured accordingly."
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
"
],
"text/plain": [
""
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"import folium\n",
"\n",
"m = folium.Map(max_zoom=9, location=[54.5, -0.8])\n",
"folium.Choropleth(gdf.head(), key_on='feature.properties.lad16cd',\n",
" data=df['Education'], \n",
" columns=['Local Authority District code (2013)',\n",
" 'Education, Skills and Training - Rank of average rank'],\n",
" fill_color='YlOrBr').add_to(m)\n",
"m"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"If we try to render the whole of the UK in a MyBinder session, things crash. (I think `geopandas` is quite heavy on resources.)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Exploring the Data\n",
"\n",
"We can exploit the notebook environment further by reating a simple application to explore the data more generally.\n",
"\n",
"For example, within the `Education` data sheet, we can explore choropleth maps generated from other columns.\n",
"\n",
"We can create tidied up names for the data selection that then refer back to the original column name:"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"{'Average rank': 'Education, Skills and Training - Average rank',\n",
" 'Rank of average rank': 'Education, Skills and Training - Rank of average rank',\n",
" 'Average score': 'Education, Skills and Training - Average score',\n",
" 'Rank of average score': 'Education, Skills and Training - Rank of average score',\n",
" 'Proportion of LSOAs in most deprived 10% nationally': 'Education, Skills and Training - Proportion of LSOAs in most deprived 10% nationally',\n",
" 'Rank of proportion of LSOAs in most deprived 10% nationally': 'Education, Skills and Training - Rank of proportion of LSOAs in most deprived 10% nationally'}"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#We can create a drop down list with values in the list that map onto column names\n",
"#A python dict is the data structure that lets us do this\n",
"\n",
"#We use a technique called a dict comprehension to create the dict from a list of column names\n",
"#The split separates the column names on '-' elements into two parts\n",
"#The parts are refenced by a numercial index value, starting at 0\n",
"#Index value 1 is the second item in the split list\n",
"#The .strip() command gets rid of leading/trailing whitespace in the string\n",
"datacols = {c.split('-')[1].strip():c for c in df['Education'].columns if c.startswith('Education')}\n",
"datacols"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "2fec38d5a86f410f82184a43358b0f0e",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='Indicator', index=1, options={'Average rank': 'Education, Skills a…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"from ipywidgets import interact\n",
"\n",
"@interact(Indicator=datacols)\n",
"def plotEducationChoropleth(Indicator='Education, Skills and Training - Rank of average rank'):\n",
" m = folium.Map(max_zoom=9, location=[54.5, -0.8])\n",
" folium.Choropleth(gdf.head(), key_on='feature.properties.lad16cd',\n",
" data=df['Education'], \n",
" columns=['Local Authority District code (2013)',\n",
" Indicator],\n",
" fill_color='YlOrBr').add_to(m)\n",
" return m"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Adding Data into Geodataframes\n",
"\n",
"We can merge data into the geodataframe using common columns and then directly plot choropleth maps by selecting the data column we want to plot against."
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
objectid
\n",
"
lad16cd
\n",
"
lad16nm
\n",
"
lad16nmw
\n",
"
bng_e
\n",
"
bng_n
\n",
"
long
\n",
"
lat
\n",
"
st_areasha
\n",
"
st_lengths
\n",
"
geometry
\n",
"
Local Authority District code (2013)
\n",
"
Local Authority District name (2013)
\n",
"
Education, Skills and Training - Average rank
\n",
"
Education, Skills and Training - Rank of average rank
\n",
"
Education, Skills and Training - Average score
\n",
"
Education, Skills and Training - Rank of average score
\n",
"
Education, Skills and Training - Proportion of LSOAs in most deprived 10% nationally
\n",
"
Education, Skills and Training - Rank of proportion of LSOAs in most deprived 10% nationally
\n",
"
\n",
" \n",
" \n",
"
\n",
"
0
\n",
"
1
\n",
"
E06000001
\n",
"
Hartlepool
\n",
"
None
\n",
"
447157
\n",
"
531476
\n",
"
-1.27023
\n",
"
54.676159
\n",
"
9.359786e+07
\n",
"
69382.685924
\n",
"
(POLYGON ((447097.0010000002 537152.0011, 4472...
\n",
"
E06000001
\n",
"
Hartlepool
\n",
"
20101.48
\n",
"
72
\n",
"
30.510
\n",
"
47
\n",
"
0.2069
\n",
"
37
\n",
"
\n",
"
\n",
"
1
\n",
"
2
\n",
"
E06000002
\n",
"
Middlesbrough
\n",
"
None
\n",
"
451141
\n",
"
516887
\n",
"
-1.21099
\n",
"
54.544670
\n",
"
5.387900e+07
\n",
"
42085.584812
\n",
"
(POLYGON ((449861.8997999998 521260.6998999994...
\n",
"
E06000002
\n",
"
Middlesbrough
\n",
"
22728.01
\n",
"
24
\n",
"
40.640
\n",
"
3
\n",
"
0.4419
\n",
"
1
\n",
"
\n",
"
\n",
"
2
\n",
"
3
\n",
"
E06000003
\n",
"
Redcar and Cleveland
\n",
"
None
\n",
"
464359
\n",
"
519597
\n",
"
-1.00611
\n",
"
54.567520
\n",
"
2.448388e+08
\n",
"
96189.660709
\n",
"
(POLYGON ((455776.7005000003 528322.4985000007...
\n",
"
E06000003
\n",
"
Redcar and Cleveland
\n",
"
19185.28
\n",
"
95
\n",
"
27.875
\n",
"
71
\n",
"
0.1818
\n",
"
54
\n",
"
\n",
"
\n",
"
3
\n",
"
4
\n",
"
E06000004
\n",
"
Stockton-on-Tees
\n",
"
None
\n",
"
444937
\n",
"
518183
\n",
"
-1.30669
\n",
"
54.556911
\n",
"
2.049366e+08
\n",
"
115439.477112
\n",
"
(POLYGON ((444126.0993999997 528005.7992000002...
\n",
"
E06000004
\n",
"
Stockton-on-Tees
\n",
"
16660.09
\n",
"
150
\n",
"
24.637
\n",
"
110
\n",
"
0.1750
\n",
"
59
\n",
"
\n",
"
\n",
"
4
\n",
"
10
\n",
"
E06000010
\n",
"
Kingston upon Hull, City of
\n",
"
None
\n",
"
511894
\n",
"
431716
\n",
"
-0.30380
\n",
"
53.769791
\n",
"
7.145577e+07
\n",
"
63330.240277
\n",
"
(POLYGON ((510966.6001000004 436533.0030000005...
\n",
"
E06000010
\n",
"
Kingston upon Hull, City of
\n",
"
25257.92
\n",
"
3
\n",
"
44.134
\n",
"
1
\n",
"
0.4217
\n",
"
2
\n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" objectid lad16cd lad16nm lad16nmw bng_e bng_n \\\n",
"0 1 E06000001 Hartlepool None 447157 531476 \n",
"1 2 E06000002 Middlesbrough None 451141 516887 \n",
"2 3 E06000003 Redcar and Cleveland None 464359 519597 \n",
"3 4 E06000004 Stockton-on-Tees None 444937 518183 \n",
"4 10 E06000010 Kingston upon Hull, City of None 511894 431716 \n",
"\n",
" long lat st_areasha st_lengths \\\n",
"0 -1.27023 54.676159 9.359786e+07 69382.685924 \n",
"1 -1.21099 54.544670 5.387900e+07 42085.584812 \n",
"2 -1.00611 54.567520 2.448388e+08 96189.660709 \n",
"3 -1.30669 54.556911 2.049366e+08 115439.477112 \n",
"4 -0.30380 53.769791 7.145577e+07 63330.240277 \n",
"\n",
" geometry \\\n",
"0 (POLYGON ((447097.0010000002 537152.0011, 4472... \n",
"1 (POLYGON ((449861.8997999998 521260.6998999994... \n",
"2 (POLYGON ((455776.7005000003 528322.4985000007... \n",
"3 (POLYGON ((444126.0993999997 528005.7992000002... \n",
"4 (POLYGON ((510966.6001000004 436533.0030000005... \n",
"\n",
" Local Authority District code (2013) Local Authority District name (2013) \\\n",
"0 E06000001 Hartlepool \n",
"1 E06000002 Middlesbrough \n",
"2 E06000003 Redcar and Cleveland \n",
"3 E06000004 Stockton-on-Tees \n",
"4 E06000010 Kingston upon Hull, City of \n",
"\n",
" Education, Skills and Training - Average rank \\\n",
"0 20101.48 \n",
"1 22728.01 \n",
"2 19185.28 \n",
"3 16660.09 \n",
"4 25257.92 \n",
"\n",
" Education, Skills and Training - Rank of average rank \\\n",
"0 72 \n",
"1 24 \n",
"2 95 \n",
"3 150 \n",
"4 3 \n",
"\n",
" Education, Skills and Training - Average score \\\n",
"0 30.510 \n",
"1 40.640 \n",
"2 27.875 \n",
"3 24.637 \n",
"4 44.134 \n",
"\n",
" Education, Skills and Training - Rank of average score \\\n",
"0 47 \n",
"1 3 \n",
"2 71 \n",
"3 110 \n",
"4 1 \n",
"\n",
" Education, Skills and Training - Proportion of LSOAs in most deprived 10% nationally \\\n",
"0 0.2069 \n",
"1 0.4419 \n",
"2 0.1818 \n",
"3 0.1750 \n",
"4 0.4217 \n",
"\n",
" Education, Skills and Training - Rank of proportion of LSOAs in most deprived 10% nationally \n",
"0 37 \n",
"1 1 \n",
"2 54 \n",
"3 59 \n",
"4 2 "
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"#Merge in data\n",
"gdf = pd.merge(gdf, df['Education'], \n",
" how='inner', #The type of join (what happens if data is in one dataset and not the other)\n",
" left_on='lad16cd', #Column we're merging on in left dataframe\n",
" right_on='Local Authority District code (2013)'#Column we're merging on in right dataframe\n",
" )\n",
"gdf.head()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"We can now create a choropleth directly from the dataframe with an inline (non-interactive) plot:"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
"
"
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"ax = gdf.plot(column='Education, Skills and Training - Average rank')\n",
"ax.axis('off');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Once again, we can create a simple widget driven app to allow us to explore the data more dynamically. Note also that alternative colour map palettes are available:"
]
},
{
"cell_type": "code",
"execution_count": 65,
"metadata": {},
"outputs": [
{
"data": {
"application/vnd.jupyter.widget-view+json": {
"model_id": "b4ec4f813cc44b7ab151c0a2d963b977",
"version_major": 2,
"version_minor": 0
},
"text/plain": [
"interactive(children=(Dropdown(description='Indicator', index=1, options={'Average rank': 'Education, Skills a…"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"@interact(Indicator=datacols)\n",
"def plotEducationChoropleth2(Indicator='Education, Skills and Training - Rank of average rank'):\n",
" ax = gdf.plot(column=Indicator, cmap='OrRd')\n",
" ax.axis('off');"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## Plot a region and it's neighbouring regions\n",
"\n",
"We can reason about shapes in a limited number of ways. For example, we can tell if one boundary touches another. This means that we can plot a region and the areas that border on it."
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [],
"source": [
"#Via https://gis.stackexchange.com/a/300262/119781\n",
"\n",
"def plotNeighbours(gdf, region='Milton Keynes',\n",
" indicator='Education, Skills and Training - Rank of average rank',\n",
" cmap='OrRd'):\n",
" ''' Plot choropleth for an indicator relative to a specified region and its neighbours. '''\n",
" \n",
" targetBoundary = gdf[gdf['lad16nm']==region]['geometry'].values[0] \n",
" neighbours = gdf.apply(lambda row: row['geometry'].touches(targetBoundary) or row['geometry']==targetBoundary ,\n",
" axis=1)\n",
" \n",
" #Show the data for the selected area and its neighbours\n",
" display(gdf[neighbours][['lad16nm',indicator]].set_index('lad16nm'))\n",
" \n",
" #Generate choropleth\n",
" ax = gdf[neighbours].plot(column=indicator, cmap=cmap)\n",
" ax.axis('off');"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
"
\n",
"
\n",
"
Education, Skills and Training - Rank of average rank