{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Let's try to build a chloropleth map using Bokeh, inspired by [this example](http://bokeh.pydata.org/en/0.10.0/docs/gallery/choropleth.html). Let's get our imports going:" ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "from bokeh.sampledata import us_states, us_counties, unemployment\n", "from bokeh.plotting import figure, show, output_file, output_notebook" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ " \n", "\n", "\n", " \n", "\n", "
\n", " \n", " BokehJS successfully loaded.\n", "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "output_notebook()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "It should be noted we're only importing three things from bokeh.plotting: figure, show and output_file." ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on function figure in module bokeh.plotting:\n", "\n", "figure(**kwargs)\n", " Create a new :class:`~bokeh.plotting.Figure` for plotting, and add it to\n", " the current document.\n", " \n", " Returns:\n", " Figure\n", "\n" ] } ], "source": [ "help(figure)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on function show in module bokeh.io:\n", "\n", "show(obj, browser=None, new='tab')\n", " Immediately display a plot object.\n", " \n", " In an IPython/Jupyter notebook, the output is displayed in an output\n", " cell. Otherwise, a browser window or tab is autoraised to display the\n", " plot object.\n", " \n", " If both a server session and notebook output have been configured on\n", " the default output state then the notebook output will be generated to\n", " load the plot from that server session.\n", " \n", " Args:\n", " obj (Widget/Plot object) : a plot object to display\n", " \n", " browser (str, optional) : browser to show with (default: None)\n", " For systems that support it, the **browser** argument allows\n", " specifying which browser to display in, e.g. \"safari\", \"firefox\",\n", " \"opera\", \"windows-default\" (see the ``webbrowser`` module\n", " documentation in the standard lib for more details).\n", " \n", " new (str, optional) : new file output mode (default: \"tab\")\n", " For file-based output, opens or raises the browser window\n", " showing the current output file. If **new** is 'tab', then\n", " opens a new tab. If **new** is 'window', then opens a new window.\n", " \n", " Returns:\n", " None\n", " \n", " .. note::\n", " The ``browser`` and ``new`` parameters are ignored when showing in\n", " an IPython/Jupyter notebook.\n", "\n" ] } ], "source": [ "help(show)" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Help on function output_file in module bokeh.io:\n", "\n", "output_file(filename, title='Bokeh Plot', autosave=False, mode='inline', root_dir=None)\n", " Configure the default output state to generate output saved\n", " to a file when :func:`show` is called.\n", " \n", " Args:\n", " filename (str) : a filename for saving the HTML document\n", " \n", " title (str, optional) : a title for the HTML document (default: \"Bokeh Plot\")\n", " \n", " autosave (bool, optional) : whether to automatically save (default: False)\n", " If True, then Bokeh plotting APIs may opt to automatically\n", " save the file more frequently (e.g., after any plotting\n", " command). If False, then the file is only saved upon calling\n", " :func:`show` or :func:`save`.\n", " \n", " mode (str, optional) : how to include BokehJS (default: ``'inline'``)\n", " One of: ``'inline'``, ``'cdn'``, ``'relative(-dev)'`` or\n", " ``'absolute(-dev)'``. See :class:`bokeh.resources.Resources` for more details.\n", " \n", " root_dir (str, optional) : root directory to use for 'absolute' resources. (default: None)\n", " This value is ignored for other resource types, e.g. ``INLINE`` or\n", " ``CDN``.\n", " \n", " Returns:\n", " None\n", " \n", " .. note::\n", " Generally, this should be called at the beginning of an interactive\n", " session or the top of a script.\n", " \n", " .. warning::\n", " This output file will be overwritten on every save, e.g., each time\n", " show() or save() is invoked, or any time a Bokeh plotting API\n", " causes a save, if ``autosave`` is True.\n", "\n" ] } ], "source": [ "help(output_file)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We can now go through the example steps: first, let's load the data." ] }, { "cell_type": "code", "execution_count": 6, "metadata": { "collapsed": true }, "outputs": [], "source": [ "us_states = us_states.data.copy()\n", "us_counties = us_counties.data.copy()\n", "unemployment = unemployment.data" ] }, { "cell_type": "code", "execution_count": 7, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "dict" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(us_states)" ] }, { "cell_type": "code", "execution_count": 8, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "dict" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(us_counties)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "dict" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "type(unemployment)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now delete Alaska and Hawai from the data and load the coordinates for each state in separate variables." ] }, { "cell_type": "code", "execution_count": 10, "metadata": { "collapsed": true }, "outputs": [], "source": [ "del us_states[\"HI\"]\n", "del us_states[\"AK\"]\n", "\n", "state_xs = [us_states[code][\"lons\"] for code in us_states]\n", "state_ys = [us_states[code][\"lats\"] for code in us_states]\n", "\n", "county_xs=[us_counties[code][\"lons\"] for code in us_counties if us_counties[code][\"state\"] not in [\"ak\", \"hi\", \"pr\", \"gu\", \"vi\", \"mp\", \"as\"]]\n", "county_ys=[us_counties[code][\"lats\"] for code in us_counties if us_counties[code][\"state\"] not in [\"ak\", \"hi\", \"pr\", \"gu\", \"vi\", \"mp\", \"as\"]]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "To have a better look at what we're manipulating, we can just plot the coordinates using matplotlib." ] }, { "cell_type": "code", "execution_count": 11, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import matplotlib.pyplot as plt\n", "%matplotlib inline" ] }, { "cell_type": "code", "execution_count": 12, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\nW1iz9nxO3AAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(county_xs[0], county_ys[0])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We now go over the data for each county and assign it a color, depending on the numerical value of the unemployment." ] }, { "cell_type": "code", "execution_count": 13, "metadata": { "collapsed": true }, "outputs": [], "source": [ "colors = [\"#F1EEF6\", \"#D4B9DA\", \"#C994C7\", \"#DF65B0\", \"#DD1C77\", \"#980043\"]\n", "\n", "county_colors = []\n", "for county_id in us_counties:\n", " if us_counties[county_id][\"state\"] in [\"ak\", \"hi\", \"pr\", \"gu\", \"vi\", \"mp\", \"as\"]:\n", " continue\n", " try:\n", " rate = unemployment[county_id]\n", " idx = min(int(rate/2), 5)\n", " county_colors.append(colors[idx])\n", " except KeyError:\n", " county_colors.append(\"black\")\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Finally, a figure is created and patches are added to the map. Filled patches are used, as well as simpler patches that only map the contour of the states." ] }, { "cell_type": "code", "execution_count": 14, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p = figure(title=\"US Unemployment 2009\", toolbar_location=\"left\",\n", " plot_width=1100, plot_height=700)\n", "\n", "p.patches(county_xs, county_ys, fill_color=county_colors, fill_alpha=0.7,\n", " line_color=\"white\", line_width=0.5)\n", "p.patches(state_xs, state_ys, fill_alpha=0.0,\n", " line_color=\"#884444\", line_width=2)\n", "\n", "show(p)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "With this knowledge in our hands, can we create a similar looking map of France?\n", "\n", "The raw data can be found here: [http://bl.ocks.org/rveciana/02eb5b83848e0b06fa8e](http://bl.ocks.org/rveciana/02eb5b83848e0b06fa8e).\n", "\n", "The instructions for using geopandas here: [https://michelleful.github.io/code-blog/2015/04/27/osm-data/](https://michelleful.github.io/code-blog/2015/04/27/osm-data/)." ] }, { "cell_type": "code", "execution_count": 15, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 16, "metadata": { "collapsed": false }, "outputs": [], "source": [ "import geopandas as gpd" ] }, { "cell_type": "code", "execution_count": 17, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import urllib" ] }, { "cell_type": "code", "execution_count": 18, "metadata": { "collapsed": false }, "outputs": [], "source": [ "json_file = urllib.request.urlopen(\"https://cdn.rawgit.com/rveciana/5919944/raw/b1f826319231c3e06d6e8548bc947ca2c29dc9e8/france.json\").readlines()" ] }, { "cell_type": "code", "execution_count": 20, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import tempfile" ] }, { "cell_type": "code", "execution_count": 38, "metadata": { "collapsed": false }, "outputs": [], "source": [ "f = tempfile.NamedTemporaryFile(dir='files/', delete=False)\n", "try:\n", " f.write(json_file[0])\n", " f.close()\n", " df = gpd.read_file(f.name)\n", "finally:\n", " \n", " os.remove(f.name)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "Index(['geometry', 'id', 'name'], dtype='object')" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.columns" ] }, { "cell_type": "code", "execution_count": 40, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Self-intersection at or near point -62.873528722783291 17.923675217841534\n", "WARNING:shapely.geos:Self-intersection at or near point -62.873528722783291 17.923675217841534\n" ] }, { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.ix[0]['geometry']" ] }, { "cell_type": "code", "execution_count": 41, "metadata": { "collapsed": false }, "outputs": [], "source": [ "df['centroids_lon'] = [g.centroid.coords.xy[0][0] for g in df.geometry]\n", "df['centroids_lat'] = [g.centroid.coords.xy[1][0] for g in df.geometry]" ] }, { "cell_type": "code", "execution_count": 42, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
geometryidnamecentroids_loncentroids_lat
0POLYGON ((-62.83850071215443 17.88430690627263...NoneNone-62.83580617.906111
1POLYGON ((-60.80687609568038 14.45926379977859...NoneNone-61.02045014.659019
2POLYGON ((-51.69959333217602 4.042408558648429...NoneNone-53.2441343.921574
3POLYGON ((55.80137128780422 -21.10606887156301...NoneNone55.542207-21.120948
4(POLYGON ((45.29296809914533 -12.8072287928395...NoneNone45.140938-12.821223
5(POLYGON ((-61.61252034014423 15.8529020293175...NoneNone-61.52421316.208115
6POLYGON ((5.326007971612768 46.45782744297811,...NoneNone5.35259246.102605
7POLYGON ((4.135055610231433 49.97735449723751,...NoneNone3.56133749.557144
8POLYGON ((3.014159270107825 46.78852126015686,...NoneNone3.18512146.389954
9POLYGON ((6.937296460540466 44.65475877312264,...NoneNone6.23970744.104451
10(POLYGON ((7.042380492427043 43.5209513999384,...NoneNone7.10717043.936108
11POLYGON ((4.800587812179828 45.29252542053877,...NoneNone4.42979244.754667
12POLYGON ((5.396063992870495 49.60729236848988,...NoneNone4.64117649.612802
13POLYGON ((1.718122876839885 43.26899420589746,...NoneNone1.49871242.913828
14POLYGON ((4.660475769664373 48.5286006315021, ...NoneNone4.15922748.302956
15POLYGON ((2.558795131932612 43.42646745217304,...NoneNone2.41645743.102181
16POLYGON ((2.979131259478947 44.64688511080885,...NoneNone2.67153344.282205
17POLYGON ((7.637856673117739 49.03251501958398,...NoneNone7.55135348.664660
18POLYGON ((5.746344099159131 43.73354028241044,...NoneNone5.08955143.550070
19POLYGON ((0.4220864835719738 48.94590473413241...NoneNone-0.36122849.101851
20POLYGON ((3.119243301994402 45.355514719049, 3...NoneNone2.66801945.053227
21POLYGON ((0.8073946004894594 46.13500728811317...NoneNone0.19686545.717035
22(POLYGON ((-1.294286037242301 46.0011550287789...NoneNone-0.67202745.782539
23POLYGON ((2.874047227592371 47.52077185533834,...NoneNone2.49458547.064345
24POLYGON ((2.488739110674885 45.73345051011042,...NoneNone1.87586545.358040
25(POLYGON ((9.249145162045409 41.37144158827662...NoneNone8.98513841.869872
26POLYGON ((5.361035982241646 47.60738214078991,...NoneNone4.77922647.422925
27POLYGON ((-1.959818239190696 48.53647429381589...NoneNone-2.85613448.443418
28POLYGON ((2.138459004386249 46.41845913140922,...NoneNone2.01525246.088976
29POLYGON ((-0.1033336758609664 47.0719731034529...NoneNone-0.32107446.557725
..................
86POLYGON ((3.469523408283038 48.85142078636706,...NoneNone2.92671548.626149
87POLYGON ((1.753150887468763 49.76476561476548,...NoneNone1.02173449.656678
88POLYGON ((2.593823142561462 48.80417881248438,...NoneNone2.46836348.918913
89POLYGON ((1.578010834324431 50.37103761292649,...NoneNone2.26677349.957822
90POLYGON ((2.944103248850098 43.69417197084155,...NoneNone2.16425743.784882
91POLYGON ((1.893262929984218 44.33981228057146,...NoneNone1.27944944.086604
92POLYGON ((6.867240439282739 47.81997102326196,...NoneNone6.93505847.627619
93POLYGON ((2.593823142561462 49.08763065578044,...NoneNone2.12874749.077596
94POLYGON ((2.593823142561462 48.80417881248438,...NoneNone2.46991248.777205
95(POLYGON ((6.236736247963222 43.01703701185652...NoneNone6.24439043.441764
96(POLYGON ((5.5011480247571 44.11934973578563, ...NoneNone5.18112944.010774
97(POLYGON ((-2.275070334850483 46.7097846370190...NoneNone-1.29365846.678413
98POLYGON ((0.0718063772833375 47.1507097265907,...NoneNone0.46093146.564760
99POLYGON ((7.217520545571375 48.3002644244025, ...NoneNone6.39459248.195865
100POLYGON ((4.275167652746887 47.9223286333411, ...NoneNone3.55374947.841685
101POLYGON ((2.138459004386249 48.88291543562218,...NoneNone1.82805648.808964
102(POLYGON ((171.3587783524229 -22.3501075171401...NoneNone171.335426-22.347483
103(POLYGON ((167.9610613214232 -21.3737733902315...NoneNone167.430420-21.096561
104(POLYGON ((167.5407251938769 -22.6020647111811...NoneNone166.195783-21.873029
105(POLYGON ((166.0695487474646 -21.5233729741933...NoneNone164.945370-20.902759
106(POLYGON ((-149.2876309441881 -17.712520414324...NoneNone-149.462011-17.650009
107(POLYGON ((-153.911328347198 -16.8306702351807...NoneNone-151.489168-16.753148
108(POLYGON ((-134.9611745969831 -23.098105436949...NoneNone-142.326510-17.496135
109(POLYGON ((-144.3136534348895 -27.641208591999...NoneNone-148.135178-24.614708
110(POLYGON ((-138.6391157130137 -10.539614046471...NoneNone-139.584983-9.366830
111POLYGON ((-56.14815068204162 46.79639492247064...NoneNone-56.18881546.780195
112POLYGON ((-56.28826272455706 46.89875253254976...NoneNone-56.32496846.955289
113POLYGON ((-178.1156836917422 -14.2559826585749...NoneNone-178.156550-14.269702
114POLYGON ((-176.1541150965259 -13.2087855708422...NoneNone-176.159688-13.282691
115(POLYGON ((-178.0105996598556 -14.342592944026...NoneNone-178.067812-14.324090
\n", "

116 rows × 5 columns

\n", "
" ], "text/plain": [ " geometry id name \\\n", "0 POLYGON ((-62.83850071215443 17.88430690627263... None None \n", "1 POLYGON ((-60.80687609568038 14.45926379977859... None None \n", "2 POLYGON ((-51.69959333217602 4.042408558648429... None None \n", "3 POLYGON ((55.80137128780422 -21.10606887156301... None None \n", "4 (POLYGON ((45.29296809914533 -12.8072287928395... None None \n", "5 (POLYGON ((-61.61252034014423 15.8529020293175... None None \n", "6 POLYGON ((5.326007971612768 46.45782744297811,... None None \n", "7 POLYGON ((4.135055610231433 49.97735449723751,... None None \n", "8 POLYGON ((3.014159270107825 46.78852126015686,... None None \n", "9 POLYGON ((6.937296460540466 44.65475877312264,... None None \n", "10 (POLYGON ((7.042380492427043 43.5209513999384,... None None \n", "11 POLYGON ((4.800587812179828 45.29252542053877,... None None \n", "12 POLYGON ((5.396063992870495 49.60729236848988,... None None \n", "13 POLYGON ((1.718122876839885 43.26899420589746,... None None \n", "14 POLYGON ((4.660475769664373 48.5286006315021, ... None None \n", "15 POLYGON ((2.558795131932612 43.42646745217304,... None None \n", "16 POLYGON ((2.979131259478947 44.64688511080885,... None None \n", "17 POLYGON ((7.637856673117739 49.03251501958398,... None None \n", "18 POLYGON ((5.746344099159131 43.73354028241044,... None None \n", "19 POLYGON ((0.4220864835719738 48.94590473413241... None None \n", "20 POLYGON ((3.119243301994402 45.355514719049, 3... None None \n", "21 POLYGON ((0.8073946004894594 46.13500728811317... None None \n", "22 (POLYGON ((-1.294286037242301 46.0011550287789... None None \n", "23 POLYGON ((2.874047227592371 47.52077185533834,... None None \n", "24 POLYGON ((2.488739110674885 45.73345051011042,... None None \n", "25 (POLYGON ((9.249145162045409 41.37144158827662... None None \n", "26 POLYGON ((5.361035982241646 47.60738214078991,... None None \n", "27 POLYGON ((-1.959818239190696 48.53647429381589... None None \n", "28 POLYGON ((2.138459004386249 46.41845913140922,... None None \n", "29 POLYGON ((-0.1033336758609664 47.0719731034529... None None \n", ".. ... ... ... \n", "86 POLYGON ((3.469523408283038 48.85142078636706,... None None \n", "87 POLYGON ((1.753150887468763 49.76476561476548,... None None \n", "88 POLYGON ((2.593823142561462 48.80417881248438,... None None \n", "89 POLYGON ((1.578010834324431 50.37103761292649,... None None \n", "90 POLYGON ((2.944103248850098 43.69417197084155,... None None \n", "91 POLYGON ((1.893262929984218 44.33981228057146,... None None \n", "92 POLYGON ((6.867240439282739 47.81997102326196,... None None \n", "93 POLYGON ((2.593823142561462 49.08763065578044,... None None \n", "94 POLYGON ((2.593823142561462 48.80417881248438,... None None \n", "95 (POLYGON ((6.236736247963222 43.01703701185652... None None \n", "96 (POLYGON ((5.5011480247571 44.11934973578563, ... None None \n", "97 (POLYGON ((-2.275070334850483 46.7097846370190... None None \n", "98 POLYGON ((0.0718063772833375 47.1507097265907,... None None \n", "99 POLYGON ((7.217520545571375 48.3002644244025, ... None None \n", "100 POLYGON ((4.275167652746887 47.9223286333411, ... None None \n", "101 POLYGON ((2.138459004386249 48.88291543562218,... None None \n", "102 (POLYGON ((171.3587783524229 -22.3501075171401... None None \n", "103 (POLYGON ((167.9610613214232 -21.3737733902315... None None \n", "104 (POLYGON ((167.5407251938769 -22.6020647111811... None None \n", "105 (POLYGON ((166.0695487474646 -21.5233729741933... None None \n", "106 (POLYGON ((-149.2876309441881 -17.712520414324... None None \n", "107 (POLYGON ((-153.911328347198 -16.8306702351807... None None \n", "108 (POLYGON ((-134.9611745969831 -23.098105436949... None None \n", "109 (POLYGON ((-144.3136534348895 -27.641208591999... None None \n", "110 (POLYGON ((-138.6391157130137 -10.539614046471... None None \n", "111 POLYGON ((-56.14815068204162 46.79639492247064... None None \n", "112 POLYGON ((-56.28826272455706 46.89875253254976... None None \n", "113 POLYGON ((-178.1156836917422 -14.2559826585749... None None \n", "114 POLYGON ((-176.1541150965259 -13.2087855708422... None None \n", "115 (POLYGON ((-178.0105996598556 -14.342592944026... None None \n", "\n", " centroids_lon centroids_lat \n", "0 -62.835806 17.906111 \n", "1 -61.020450 14.659019 \n", "2 -53.244134 3.921574 \n", "3 55.542207 -21.120948 \n", "4 45.140938 -12.821223 \n", "5 -61.524213 16.208115 \n", "6 5.352592 46.102605 \n", "7 3.561337 49.557144 \n", "8 3.185121 46.389954 \n", "9 6.239707 44.104451 \n", "10 7.107170 43.936108 \n", "11 4.429792 44.754667 \n", "12 4.641176 49.612802 \n", "13 1.498712 42.913828 \n", "14 4.159227 48.302956 \n", "15 2.416457 43.102181 \n", "16 2.671533 44.282205 \n", "17 7.551353 48.664660 \n", "18 5.089551 43.550070 \n", "19 -0.361228 49.101851 \n", "20 2.668019 45.053227 \n", "21 0.196865 45.717035 \n", "22 -0.672027 45.782539 \n", "23 2.494585 47.064345 \n", "24 1.875865 45.358040 \n", "25 8.985138 41.869872 \n", "26 4.779226 47.422925 \n", "27 -2.856134 48.443418 \n", "28 2.015252 46.088976 \n", "29 -0.321074 46.557725 \n", ".. ... ... \n", "86 2.926715 48.626149 \n", "87 1.021734 49.656678 \n", "88 2.468363 48.918913 \n", "89 2.266773 49.957822 \n", "90 2.164257 43.784882 \n", "91 1.279449 44.086604 \n", "92 6.935058 47.627619 \n", "93 2.128747 49.077596 \n", "94 2.469912 48.777205 \n", "95 6.244390 43.441764 \n", "96 5.181129 44.010774 \n", "97 -1.293658 46.678413 \n", "98 0.460931 46.564760 \n", "99 6.394592 48.195865 \n", "100 3.553749 47.841685 \n", "101 1.828056 48.808964 \n", "102 171.335426 -22.347483 \n", "103 167.430420 -21.096561 \n", "104 166.195783 -21.873029 \n", "105 164.945370 -20.902759 \n", "106 -149.462011 -17.650009 \n", "107 -151.489168 -16.753148 \n", "108 -142.326510 -17.496135 \n", "109 -148.135178 -24.614708 \n", "110 -139.584983 -9.366830 \n", "111 -56.188815 46.780195 \n", "112 -56.324968 46.955289 \n", "113 -178.156550 -14.269702 \n", "114 -176.159688 -13.282691 \n", "115 -178.067812 -14.324090 \n", "\n", "[116 rows x 5 columns]" ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's filter the map items based on the centroid coordinates." ] }, { "cell_type": "code", "execution_count": 46, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n3P8z/VwmrnFn7YE7aDQaxDr6jNz1FHOb9GUXcsONQ+v4a/N4atWzx9JSl9s3Q7B3MEFfX8p973eA\nmFmzUjPtu3ChMC38au/rvXnK8f7I6d9Ps27EOtp2KI/bqfytuuPjk3E0W4hr1WpM6Jh39fzw2Fjm\nHDzI+9hYZAoFSpWKLk3LcnRl9kpVuWXWxvOsO/SApBTtA/O/+jsu9BK+Rfx78fPzA+D06VP4e7tT\nu1JJZg3On/xXVhgb69L4O62/tN7Yn9A3MWHy8/to9A3Ze/EJ+qVKoW9tScsVC+h9bC8lmzem1iit\noXwQ8A5J/cUI6ixAv/EyVv55kzVuXjjV7cCgjXeYdSEpXwYToFGPceiZWOFz+w2Xz4eQEKfi6eNY\nnjySY2TkSP/+17Ps27nz/rR/m1jlHHmQGR2Gd8DAVJ93ofH56q9Wq2lUbQNqtYYqJfP3HYTHxREU\nFkaiTIZSpUJXKmJSNipVueWcZwAl2v/K0t3eJKUo8PPz48WL/64IcX4oWml+pdy9e5eGDRpwYHFn\n2jcog1AozKBMVBBuP35DpykHiYhOolyndgw+vj/nToBGrWadSwuingbi3Ko5TSaO4vcmrmhUKqT6\nxsw4mzF8KDckJ8Sxb+YPvPP7zCAKhEwYH4yxcd5cEomJEaxdZ4+JlSF7X+9FKs27aMjuhbvZM28P\nrdpX4NCZgXnq+zwwglrlfmVt//5Uy2d4T+dVK0Gg5u2Z8Rjo5168OVUuJzFZjoWpYbr37zwKZsnO\n65z2fInU0ACJVEoZZ2fue99FIMjTQuyroii4/Rti//79uFS2w9M3hGFLThMVn4KNhSFui7rQtFbB\n4uzCPiTScNhOhLq6NF88m9azJue6r0AoZLz31bTXs/Rt0ahUONdph+uU7Xmah1Ih5+qfSwm4foTo\nkCeIRBIqV/6RFi2Wo6triq5u/nLODQ2tGTb0Plu3VmHdqHVM2Za7g5jPGTB3AE9uPcHjkm+e+86b\ndh6pWJRngxkWG8tFX19M9PSQyZXIFAp2nH7AmJ6Zaw98SVxiMk4d1xOXKGfDlJaM6qbt5/sslHrD\ndqEBGk0ew93NOxj4Y29WrFjxnzaY+aXIaH6lPHnyhOsPXuPpG0xZe1N+aFSKPRf8aTbqT3q3rkzb\nemUw0JNw7d5rHr+IICImiTUTW/N9nazrbwP4v4ygzdi9qNUaZr9/hoFx/sUwAIZdOcHm+q0pXroa\n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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "metropolitan_france = (df.centroids_lat > 40) & (df.centroids_lon > -10)\n", "df[metropolitan_france].plot()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Nice! Let's try to do the same thing using bokeh! What we need is a way to extract the polygon coordinates from the geopandas dataframe and plot them using Bokeh." ] }, { "cell_type": "code", "execution_count": 65, "metadata": { "collapsed": true }, "outputs": [], "source": [ "s = df[metropolitan_france].geometry" ] }, { "cell_type": "code", "execution_count": 79, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Self-intersection at or near point -0.17338969711869368 42.788700804756914\n", "WARNING:shapely.geos:Self-intersection at or near point -0.17338969711869368 42.788700804756914\n" ] }, { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "MultiPolygon\n" ] } ], "source": [ "from ipywidgets import interact\n", "from IPython.display import display\n", "\n", "@interact\n", "def disp_geom(ind=(0, s.shape[0] - 1)):\n", " display(s.iloc[ind])\n", " print(s.iloc[ind].type)" ] }, { "cell_type": "code", "execution_count": 80, "metadata": { "collapsed": false }, "outputs": [], "source": [ "o = s.iloc[43]" ] }, { "cell_type": "code", "execution_count": 81, "metadata": { "collapsed": false }, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "Self-intersection at or near point -0.17338969711869368 42.788700804756914\n", "WARNING:shapely.geos:Self-intersection at or near point -0.17338969711869368 42.788700804756914\n" ] }, { "data": { "image/svg+xml": [ "" ], "text/plain": [ "" ] }, "execution_count": 81, "metadata": {}, "output_type": "execute_result" } ], "source": [ "o" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Reading the [shapely documentation](http://toblerity.org/shapely/manual.html#polygons), I found out that the coordinates of a polygon can be accessed in the following way:" ] }, { "cell_type": "code", "execution_count": 84, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "3" ] }, "execution_count": 84, "metadata": {}, "output_type": "execute_result" } ], "source": [ "len(o.geoms)" ] }, { "cell_type": "code", "execution_count": 82, "metadata": { "collapsed": false }, "outputs": [ { "ename": "AttributeError", "evalue": "'MultiPolygon' object has no attribute 'exterior'", "output_type": "error", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", "\u001b[1;31mAttributeError\u001b[0m Traceback (most recent call last)", "\u001b[1;32m\u001b[0m in \u001b[0;36m\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mplt\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mplot\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mo\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexterior\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcoords\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mxy\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m0\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mo\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexterior\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcoords\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mxy\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;36m1\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mAttributeError\u001b[0m: 'MultiPolygon' object has no attribute 'exterior'" ] } ], "source": [ "plt.plot(o.exterior.coords.xy[0], o.exterior.coords.xy[1])" ] }, { "cell_type": "code", "execution_count": 87, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/plain": [ "[]" ] }, "execution_count": 87, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "plt.plot(o.convex_hull.exterior.coords.xy[0], o.convex_hull.exterior.coords.xy[1])" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We are now set: let's build a Bokeh figure using this!" ] }, { "cell_type": "code", "execution_count": 95, "metadata": { "collapsed": true }, "outputs": [], "source": [ "import numpy as np" ] }, { "cell_type": "code", "execution_count": 97, "metadata": { "collapsed": false }, "outputs": [], "source": [ "dept_xs = [np.array(row.convex_hull.exterior.coords.xy[0]) for row in df[metropolitan_france].geometry]\n", "dept_ys = [np.array(row.convex_hull.exterior.coords.xy[1]) for row in df[metropolitan_france].geometry]" ] }, { "cell_type": "code", "execution_count": 98, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "\n", "
\n", "\n" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "p = figure(title=\"France map from geojson data\", toolbar_location=\"left\",\n", " plot_width=1100, plot_height=700)\n", "\n", "p.patches(dept_xs, dept_ys, fill_color=\"#F1EEF6\", fill_alpha=0.7,\n", " line_color=\"white\", line_width=0.5)\n", "\n", "show(p)" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "collapsed": true }, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.0" } }, "nbformat": 4, "nbformat_minor": 0 }