{ "metadata": { "name": "", "signature": "sha256:99e1b4d8ac85ab02707cc8cc908bd9aaefbad09da0718ce8c139bc57007d164f" }, "nbformat": 3, "nbformat_minor": 0, "worksheets": [ { "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "Chapter 4, example 2\n", "====================\n", "\n", "In this example, we show how we can make visual representations of the world cities population data by displaying a map of human density. You need to execute the example 3 of Chapter 3 first, so that the data set is available." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pandas as pd\n", "filename = '../chapter3/data/worldcitiespop.txt'\n", "data = pd.read_csv(filename)" ], "language": "python", "metadata": {}, "outputs": [ { "output_type": "stream", "stream": "stderr", "text": [ "/Users/admin/Library/Enthought/Canopy_64bit/User/lib/python2.7/site-packages/pandas/io/parsers.py:1159: DtypeWarning: Columns (3) have mixed types. Specify dtype option on import or set low_memory=False.\n", " data = self._reader.read(nrows)\n" ] } ], "prompt_number": 2 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's plot the raw coordinates, with one pixel per position." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import pylab\n", "from pylab import plot\n", "%matplotlib inline\n", "plot(data.Longitude, data.Latitude, ',')" ], "language": "python", "metadata": {}, "outputs": [ { "metadata": {}, "output_type": "pyout", "prompt_number": 6, "text": [ "[]" ] }, { "metadata": {}, "output_type": "display_data", "png": "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\nRK5CYII=\n", "text": [ "" ] } ], "prompt_number": 6 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We easily recognize the world map!" ] }, { "cell_type": "code", "collapsed": false, "input": [ "locations = data[['Longitude','Latitude']].as_matrix()" ], "language": "python", "metadata": {}, "outputs": [], "prompt_number": 7 }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now, we load a world map with `matplotlib.basemap`." ] }, { "cell_type": "code", "collapsed": false, "input": [ "from mpl_toolkits.basemap import Basemap\n", "m = Basemap(projection='mill', llcrnrlat=-65, urcrnrlat=85, llcrnrlon=-180, urcrnrlon=180)" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "ImportError", "evalue": "No module named basemap", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mImportError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0;32mfrom\u001b[0m \u001b[0mmpl_toolkits\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mbasemap\u001b[0m \u001b[0;32mimport\u001b[0m \u001b[0mBasemap\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mm\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mBasemap\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mprojection\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m'mill'\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mllcrnrlat\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m65\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murcrnrlat\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m85\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mllcrnrlon\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m-\u001b[0m\u001b[0;36m180\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0murcrnrlon\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;36m180\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mImportError\u001b[0m: No module named basemap" ] } ], "prompt_number": 8 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We specify the coordinates of the map's corners." ] }, { "cell_type": "code", "collapsed": false, "input": [ "x0, y0 = m(-180, -65)\n", "x1, y1 = m(180, 85)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's create a histogram of the human density. First, we retrieve the population of every city." ] }, { "cell_type": "code", "collapsed": false, "input": [ "population = data.Population" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We project the geographical coordinates into cartesian coordinates." ] }, { "cell_type": "code", "collapsed": false, "input": [ "x, y = m(locations[:,0], locations[:,1])" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We handle cities which do not have a population value." ] }, { "cell_type": "code", "collapsed": false, "input": [ "weights = population.copy()\n", "weights[isnan(weights)] = 1000" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We create the 2D histogram with NumPy." ] }, { "cell_type": "code", "collapsed": false, "input": [ "h, _, _ = histogram2d(x, y, bins=(linspace(x0, x1, 500), linspace(y0, y1, 500)), weights=weights)\n", "h[h==0] = 1" ], "language": "python", "metadata": {}, "outputs": [ { "ename": "NameError", "evalue": "name 'histogram2d' is not defined", "output_type": "pyerr", "traceback": [ "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[0;31mNameError\u001b[0m Traceback (most recent call last)", "\u001b[0;32m\u001b[0m in \u001b[0;36m\u001b[0;34m()\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mh\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0m_\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mhistogram2d\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mbins\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mlinspace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mx0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mx1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m500\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mlinspace\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0my0\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0my1\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0;36m500\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m,\u001b[0m \u001b[0mweights\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0mweights\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mh\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0mh\u001b[0m\u001b[0;34m==\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;36m1\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n", "\u001b[0;31mNameError\u001b[0m: name 'histogram2d' is not defined" ] } ], "prompt_number": 9 }, { "cell_type": "markdown", "metadata": {}, "source": [ "We filter this histogram with a Gaussian kernel." ] }, { "cell_type": "code", "collapsed": false, "input": [ "import scipy.ndimage.filters\n", "z = scipy.ndimage.filters.gaussian_filter(log(h.T), 1)" ], "language": "python", "metadata": {}, "outputs": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "We draw the coast lines in the world map, as well as the filtered human density." ] }, { "cell_type": "code", "collapsed": false, "input": [ "figure(figsize=(10,6))\n", "m.drawcoastlines()\n", "m.imshow(z, origin='lower', extent=[x0,x1,y0,y1], cmap=get_cmap('Reds'))" ], "language": "python", "metadata": {}, "outputs": [] } ], "metadata": {} } ] }