{ "metadata": { "name": "Day_22_mapping_counties" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "How to plot counties and shade them according with a specified color?\n", "\n", "\n", "\n", "I forgot that this has been an [old question for me](http://blog.dataunbound.com/2009/09/03/plotting-data-for-counties-on-google-maps-part-i/).\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Where to get county shape files?\n", "\n", "\n", "\n", "* A [UScounty shapefile is included in basemap version 1.0.6](https://github.com/matplotlib/basemap/commits/v1.0.6rel/lib/mpl_toolkits/basemap/data/UScounties.shp). Unfortunately, the latest version of basemap provided by enpkg is 1.0.2 (and I've not successfully been able to compile from source on a Mac).\n", "\n", "\n", "\n", "* I think it's safe to copy the USCounties files over from version 1.0.6 to your basemap data directory, but I'd rather not add files to that directory.\n", "\n", "\n", "\n", "* Alternative: download files from US Census\n", "\n", "\n", "\n", "http://www.census.gov/geo/www/tiger/tgrshp2012/tgrshp2012.html\n", "\n", "\n", "\n", "ftp interface: ftp://ftp2.census.gov/geo/tiger/TIGER2012/COUNTY/ -> ftp://ftp2.census.gov/geo/tiger/TIGER2012/COUNTY/tl_2012_us_county.zip\n", "\n", "\n", "\n", "I've not added these files to the working-open-data repo because I don't want large data files in the repo if possible." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import numpy as np\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "\n", "\n", "with warnings.catch_warnings():\n", "\n", " warnings.simplefilter(\"ignore\")\n", "\n", "\n", "\n", " from mpl_toolkits.basemap import Basemap" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 1 }, { "cell_type": "code", "collapsed": false, "input": [ "# you can figure out where the data directory for basemap is\n", "\n", "\n", "\n", "import os\n", "\n", "import inspect\n", "\n", "basemap_data_dir = os.path.join(os.path.dirname(inspect.getfile(Basemap)), \"data\")\n", "\n", "print basemap_data_dir, os.path.exists(os.path.join(basemap_data_dir,\"UScounties.shp\"))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "C:\\Python27\\lib\\site-packages\\mpl_toolkits\\basemap\\data True\n" ] } ], "prompt_number": 2 }, { "cell_type": "code", "collapsed": false, "input": [ "!ls $basemap_data_dir" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "'ls' is not recognized as an internal or external command,\n", "operable program or batch file.\n" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "# https://code.google.com/p/pyshp/\n", "\n", "import shapefile\n", "\n", " \n", "\n", "# this is my git clone of https://github.com/matplotlib/basemap --> these files will be in the PiCloud basemap_data_dir\n", "\n", "if os.path.exists(os.path.join(basemap_data_dir,\"UScounties.shp\")):\n", "\n", " shpf = shapefile.Reader(os.path.join(basemap_data_dir,\"UScounties\"))\n", "\n", "else:\n", "\n", " # put in your path\n", "\n", " #shpf = shapefile.Reader(\"/Users/raymondyee/Dropbox/WwoD13/tl_2012_us_county\")\n", "\n", " shpf = shapefile.Reader(\"/Users/raymondyee/C/src/basemap/lib/mpl_toolkits/basemap/data/UScounties\")\n", "\n", "\n", "\n", "shapes = shpf.shapes()\n", "\n", "records = shpf.records()\n", "\n", "for x in records:\n", " print x \n", " break\n", "\n", "for y in shapes:\n", " print y\n", " break\n", " " ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stdout", "text": [ "['01', '029', '01029', 'AL', 'Cleburne', 'County']\n", "\n" ] } ], "prompt_number": 3 }, { "cell_type": "code", "collapsed": false, "input": [ "shpf.fields\n" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "AttributeError", "evalue": "'list' object has no attribute 'parts'", "output_type": "pyerr", "traceback": [ "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\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[0;32m 1\u001b[0m \u001b[0mshpf\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfields\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m----> 2\u001b[1;33m \u001b[0mshapes\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mparts\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m", "\u001b[1;31mAttributeError\u001b[0m: 'list' object has no attribute 'parts'" ] } ], "prompt_number": 10 }, { "cell_type": "code", "collapsed": false, "input": [ "zip([f[0] for f in shpf.fields[1:]], records[0])\n" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 5, "text": [ "[('STATE_FIPS', '01'),\n", " ('COUNTY_FIP', '029'),\n", " ('FIPS', '01029'),\n", " ('STATE', 'AL'),\n", " ('NAME', 'Cleburne'),\n", " ('LSAD', 'County')]" ] } ], "prompt_number": 5 }, { "cell_type": "code", "collapsed": false, "input": [ "# just CA\n", "\n", "\n", "\n", "from itertools import islice, izip\n", "\n", "len([r for r in islice(records,None) if r[0] == '06'])" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 6, "text": [ "58" ] } ], "prompt_number": 6 }, { "cell_type": "code", "collapsed": false, "input": [ "def zip_filter_by_state(records, shapes, included_states=None):\n", "\n", " # by default, no filtering\n", "\n", " # included_states is a list of states fips prefixes\n", "\n", " for (record, state) in izip(records, shapes):\n", "\n", " if record[0] in included_states:\n", "\n", " yield (record, state) \n", "\n", " " ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "code", "collapsed": false, "input": [ "list(zip_filter_by_state(records, shapes, ['06']))" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 12, "text": [ "[(['06', '035', '06035', 'CA', 'Lassen', 'County'],\n", " ),\n", " (['06', '049', '06049', 'CA', 'Modoc', 'County'],\n", " ),\n", " (['06', '075', '06075', 'CA', 'San Francisco', 'County'],\n", " ),\n", " (['06', '083', '06083', 'CA', 'Santa Barbara', 'County'],\n", " ),\n", " (['06', '091', '06091', 'CA', 'Sierra', 'County'],\n", " ),\n", " (['06', '095', '06095', 'CA', 'Solano', 'County'],\n", " ),\n", " (['06', '101', '06101', 'CA', 'Sutter', 'County'],\n", " ),\n", " (['06', '105', '06105', 'CA', 'Trinity', 'County'],\n", " ),\n", " (['06', '111', '06111', 'CA', 'Ventura', 'County'],\n", " ),\n", " (['06', '115', '06115', 'CA', 'Yuba', 'County'],\n", " ),\n", " (['06', '033', '06033', 'CA', 'Lake', 'County'],\n", " ),\n", " (['06', '071', '06071', 'CA', 'San Bernardino', 'County'],\n", " ),\n", " (['06', '087', '06087', 'CA', 'Santa Cruz', 'County'],\n", " ),\n", " (['06', '001', '06001', 'CA', 'Alameda', 'County'],\n", " ),\n", " (['06', '003', '06003', 'CA', 'Alpine', 'County'],\n", " ),\n", " (['06', '005', '06005', 'CA', 'Amador', 'County'],\n", " ),\n", " (['06', '007', '06007', 'CA', 'Butte', 'County'],\n", " ),\n", " (['06', '009', '06009', 'CA', 'Calaveras', 'County'],\n", " ),\n", " (['06', '011', '06011', 'CA', 'Colusa', 'County'],\n", " ),\n", " (['06', '013', '06013', 'CA', 'Contra Costa', 'County'],\n", " ),\n", " (['06', '015', '06015', 'CA', 'Del Norte', 'County'],\n", " ),\n", " (['06', '017', '06017', 'CA', 'El Dorado', 'County'],\n", " ),\n", " (['06', '019', '06019', 'CA', 'Fresno', 'County'],\n", " ),\n", " (['06', '021', '06021', 'CA', 'Glenn', 'County'],\n", " ),\n", " (['06', '023', '06023', 'CA', 'Humboldt', 'County'],\n", " ),\n", " (['06', '025', '06025', 'CA', 'Imperial', 'County'],\n", " ),\n", " (['06', '027', '06027', 'CA', 'Inyo', 'County'],\n", " ),\n", " (['06', '029', '06029', 'CA', 'Kern', 'County'],\n", " ),\n", " (['06', '031', '06031', 'CA', 'Kings', 'County'],\n", " ),\n", " (['06', '037', '06037', 'CA', 'Los Angeles', 'County'],\n", " ),\n", " (['06', '039', '06039', 'CA', 'Madera', 'County'],\n", " ),\n", " (['06', '041', '06041', 'CA', 'Marin', 'County'],\n", " ),\n", " (['06', '043', '06043', 'CA', 'Mariposa', 'County'],\n", " ),\n", " (['06', '045', '06045', 'CA', 'Mendocino', 'County'],\n", " ),\n", " (['06', '047', '06047', 'CA', 'Merced', 'County'],\n", " ),\n", " (['06', '051', '06051', 'CA', 'Mono', 'County'],\n", " ),\n", " (['06', '053', '06053', 'CA', 'Monterey', 'County'],\n", " ),\n", " (['06', '055', '06055', 'CA', 'Napa', 'County'],\n", " ),\n", " (['06', '057', '06057', 'CA', 'Nevada', 'County'],\n", " ),\n", " (['06', '059', '06059', 'CA', 'Orange', 'County'],\n", " ),\n", " (['06', '061', '06061', 'CA', 'Placer', 'County'],\n", " ),\n", " (['06', '063', '06063', 'CA', 'Plumas', 'County'],\n", " ),\n", " (['06', '065', '06065', 'CA', 'Riverside', 'County'],\n", " ),\n", " (['06', '067', '06067', 'CA', 'Sacramento', 'County'],\n", " ),\n", " (['06', '069', '06069', 'CA', 'San Benito', 'County'],\n", " ),\n", " (['06', '073', '06073', 'CA', 'San Diego', 'County'],\n", " ),\n", " (['06', '077', '06077', 'CA', 'San Joaquin', 'County'],\n", " ),\n", " (['06', '079', '06079', 'CA', 'San Luis Obispo', 'County'],\n", " ),\n", " (['06', '081', '06081', 'CA', 'San Mateo', 'County'],\n", " ),\n", " (['06', '085', '06085', 'CA', 'Santa Clara', 'County'],\n", " ),\n", " (['06', '089', '06089', 'CA', 'Shasta', 'County'],\n", " ),\n", " (['06', '093', '06093', 'CA', 'Siskiyou', 'County'],\n", " ),\n", " (['06', '097', '06097', 'CA', 'Sonoma', 'County'],\n", " ),\n", " (['06', '099', '06099', 'CA', 'Stanislaus', 'County'],\n", " ),\n", " (['06', '103', '06103', 'CA', 'Tehama', 'County'],\n", " ),\n", " (['06', '107', '06107', 'CA', 'Tulare', 'County'],\n", " ),\n", " (['06', '109', '06109', 'CA', 'Tuolumne', 'County'],\n", " ),\n", " (['06', '113', '06113', 'CA', 'Yolo', 'County'],\n", " )]" ] } ], "prompt_number": 12 }, { "cell_type": "code", "collapsed": false, "input": [ "len(shapes)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "pyout", "prompt_number": 8, "text": [ "3221" ] } ], "prompt_number": 8 }, { "cell_type": "code", "collapsed": false, "input": [ "# http://www.geophysique.be/2013/02/12/matplotlib-basemap-tutorial-10-shapefiles-unleached-continued/\n", "#\n", "# BaseMap example by geophysique.be\n", "# tutorial 10\n", "import time\n", "\n", "\n", "import os\n", "\n", "import inspect\n", "\n", "import numpy as np\n", "\n", "import matplotlib.pyplot as plt\n", "\n", "from itertools import islice, izip\n", "\n", "from mpl_toolkits.basemap import Basemap\n", "\n", " \n", "\n", "### PARAMETERS FOR MATPLOTLIB :\n", "\n", "import matplotlib as mpl\n", "\n", "mpl.rcParams['font.size'] = 10.\n", "\n", "mpl.rcParams['font.family'] = 'Comic Sans MS'\n", "\n", "mpl.rcParams['axes.labelsize'] = 8.\n", "\n", "mpl.rcParams['xtick.labelsize'] = 6.\n", "\n", "mpl.rcParams['ytick.labelsize'] = 6.\n", "\n", " \n", "\n", "fig = plt.figure(figsize=(11.7,8.3))\n", "\n", "#Custom adjust of the subplots\n", "\n", "plt.subplots_adjust(left=0.05,right=0.95,top=0.90,bottom=0.05,wspace=0.15,hspace=0.05)\n", "\n", "ax = plt.subplot(111)\n", "\n", "#Let's create a basemap of USA\n", "\n", "#x1 = -180.\n", "#x2 = -62.\n", "#y1 = 18.\n", "#y2 = 68.\n", "\n", "x1 = -128.\n", "x2 = -111.\n", "y1 = 25.\n", "y2 = 44.5\n", " \n", "#m = Basemap(llcrnrlon=-128,llcrnrlat=25,urcrnrlon=-111.0,urcrnrlat=44.5,\n", "# resolution='i',projection='cass',lon_0=-120.36,lat_0=37.7)\n", "m = Basemap(resolution='i',projection='merc', llcrnrlat=y1,urcrnrlat=y2,llcrnrlon=x1,urcrnrlon=x2,lat_ts=(y1+y2)/2)\n", "\n", "#m.drawcountries(linewidth=0.5)\n", "\n", "#m.drawcoastlines(linewidth=0.5)\n", "\n", "m.drawparallels(np.arange(y1,y2,2.),labels=[1,0,0,0],color='black',dashes=[1,0],labelstyle='+/-',linewidth=0.2) # draw parallels\n", "\n", "m.drawmeridians(np.arange(x1,x2,2.),labels=[0,0,0,1],color='black',dashes=[1,0],labelstyle='+/-',linewidth=0.2) # draw meridians\n", "\n", " \n", "\n", " \n", "\n", "def zip_filter_by_state(records, shapes, included_states=None):\n", "\n", " # by default, no filtering\n", "\n", " # included_states is a list of states fips prefixes\n", "\n", " for (record, state) in izip(records, shapes):\n", "\n", " if record[0] in included_states:\n", "\n", " yield (record, state) \n", "\n", " \n", "\n", " \n", "\n", "from matplotlib.collections import LineCollection\n", "\n", "from matplotlib import cm\n", "\n", "import shapefile \n", "\n", "\n", "\n", "basemap_data_dir = os.path.join(os.path.dirname(inspect.getfile(Basemap)), \"data\")\n", "\n", "\n", "\n", "# this is my git clone of https://github.com/matplotlib/basemap --> these files will be in the PiCloud basemap_data_dir\n", "\n", "if os.path.exists(os.path.join(basemap_data_dir,\"UScounties.shp\")):\n", "\n", " shpf = shapefile.Reader(os.path.join(basemap_data_dir,\"UScounties\"))\n", "\n", "else:\n", "\n", " # put in your path\n", "\n", " #shpf = shapefile.Reader(\"/Users/raymondyee/Dropbox/WwoD13/tl_2012_us_county\")\n", "\n", " shpf = shapefile.Reader(\"/Users/raymondyee/C/src/basemap/lib/mpl_toolkits/basemap/data/UScounties\")\n", "\n", "\n", "\n", "shapes = shpf.shapes()\n", "\n", "records = shpf.records()\n", "\n", " \n", "\n", "# show only CA and AK (for example)\n", "\n", "for record, shape in zip_filter_by_state(records, shapes, ['06']):# removed 02 state , we just need california\n", "\n", " lons,lats = zip(*shape.points) # lat long for each county\n", "\n", " data = np.array(m(lons, lats)).T\n", " \n", " \n", "\n", " \n", "\n", " if len(shape.parts) == 1:\n", "\n", " segs = [data,]\n", "\n", " else:\n", "\n", " segs = []\n", "\n", " for i in range(1,len(shape.parts)):\n", "\n", " index = shape.parts[i-1]\n", "\n", " index2 = shape.parts[i]\n", "\n", " segs.append(data[index:index2])\n", " \n", " #time.sleep(1) # introduce a delay of 1 second\n", "\n", " segs.append(data[index2:])\n", "\n", " \n", "\n", " lines = LineCollection(segs,antialiaseds=(1,))\n", " \n", " color = 0\n", " if record[2] == '06071': # logic for mapping counties to color gradients - high lighting san-bernandino county\n", " color = 0.1\n", " else:\n", " color = 0.5\n", " \n", " \n", " lines.set_facecolors(cm.jet(color)) #np.random.rand(1)\n", "\n", " lines.set_edgecolors('k')\n", "\n", " lines.set_linewidth(0.1)\n", "\n", " ax.add_collection(lines) # draw step\n", " time.sleep(1)\n", "\n", " \n", "\n", "plt.savefig('tutorial10.png',dpi=300)\n", "\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\nOtn8Aq0QxlYAAAAASUVORK5CYII=\n" } ], "prompt_number": 18 }, { "cell_type": "code", "collapsed": false, "input": [ "# read deb's dataframe" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "code", "collapsed": false, "input": [ "from mpl_toolkits.basemap import Basemap\n", "import numpy as np\n", "import matplotlib.pyplot as plt\n", "# llcrnrlat,llcrnrlon,urcrnrlat,urcrnrlon\n", "# are the lat/lon values of the lower left and upper right corners\n", "# of the map.\n", "# resolution = 'i' means use intermediate resolution coastlines.\n", "# lon_0, lat_0 are the central longitude and latitude of the projection.\n", "#m = Basemap(llcrnrlon=-10.5,llcrnrlat=49.5,urcrnrlon=3.5,urcrnrlat=59.5,\n", "# resolution='i',projection='cass',lon_0=-4.36,lat_0=54.7)\n", "m = Basemap(llcrnrlon=-128,llcrnrlat=25,urcrnrlon=-111.0,urcrnrlat=44.5,\n", " resolution='i',projection='cass',lon_0=-120.36,lat_0=37.7)\n", "# can get the identical map this way (by specifying width and\n", "# height instead of lat/lon corners)\n", "#m = Basemap(width=891185,height=1115557,\\\n", "# resolution='i',projection='cass',lon_0=-4.36,lat_0=54.7)\n", "m.drawcoastlines()\n", "m.fillcontinents(color='coral',lake_color='aqua')\n", "# draw parallels and meridians.\n", "#m.drawparallels(np.arange(-40,61.,2.))\n", "#m.drawmeridians(np.arange(-20.,21.,2.))\n", "m.drawmapboundary(fill_color='aqua')\n", "plt.title(\"Cassini Projection\")\n", "plt.show()" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "display_data", "png": "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\n" } ], "prompt_number": 16 } ], "metadata": {} } ] }