Skip to content

Instantly share code, notes, and snippets.

@perrygeo
Last active March 7, 2018 15:46
Show Gist options
  • Star 2 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save perrygeo/c426355e40037c452434 to your computer and use it in GitHub Desktop.
Save perrygeo/c426355e40037c452434 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"metadata": {
"name": "",
"signature": "sha256:f17822aece2c07e68d24f22219864ef5d07b85409caf1656a06086a35e5bea6a"
},
"nbformat": 3,
"nbformat_minor": 0,
"worksheets": [
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# GeoPandas Heatmaps\n",
"\n",
"Simple demonstration of generating heatmap plots from geopandas point geodataframes"
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"%matplotlib inline\n",
"import geopandas as gpd\n",
"import numpy as np\n",
"from scipy import ndimage\n",
"\n",
"import matplotlib.pylab as pylab\n",
"import matplotlib.pyplot as plt\n",
"pylab.rcParams['figure.figsize'] = 8, 6"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 1
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Load the point data and plot it to see the pattern..."
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"pts = gpd.GeoDataFrame.from_file('points_demo.shp')"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 6
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"pts.plot()"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "pyout",
"prompt_number": 3,
"text": [
"<matplotlib.axes.AxesSubplot at 0x7f61dc5ddc90>"
]
},
{
"metadata": {},
"output_type": "display_data",
"png": "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\nRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x7f61e7ab3410>"
]
}
],
"prompt_number": 3
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"Now we define the `heatmap` function which takes a GeoDataFrame with point geometries and shows a matplotlib plot of heatmap density. This is done using numpy's 2D histogram binning with smoothing from scipy. "
]
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"def heatmap(d, bins=(100,100), smoothing=1.3, cmap='jet'):\n",
" def getx(pt):\n",
" return pt.coords[0][0]\n",
"\n",
" def gety(pt):\n",
" return pt.coords[0][1]\n",
"\n",
" x = list(d.geometry.apply(getx))\n",
" y = list(d.geometry.apply(gety))\n",
" heatmap, xedges, yedges = np.histogram2d(y, x, bins=bins)\n",
" extent = [yedges[0], yedges[-1], xedges[-1], xedges[0]]\n",
"\n",
" logheatmap = np.log(heatmap)\n",
" logheatmap[np.isneginf(logheatmap)] = 0\n",
" logheatmap = ndimage.filters.gaussian_filter(logheatmap, smoothing, mode='nearest')\n",
" \n",
" plt.imshow(logheatmap, cmap=cmap, extent=extent)\n",
" plt.colorbar()\n",
" plt.gca().invert_yaxis()\n",
" plt.show()"
],
"language": "python",
"metadata": {},
"outputs": [],
"prompt_number": 7
},
{
"cell_type": "code",
"collapsed": false,
"input": [
"heatmap(pts, bins=50, smoothing=1.5)"
],
"language": "python",
"metadata": {},
"outputs": [
{
"metadata": {},
"output_type": "display_data",
"png": "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\nEREREREREREREREREREREREREREREREREZG54n8/jZmdQe+j6gAAAABJRU5ErkJggg==\n",
"text": [
"<matplotlib.figure.Figure at 0x7f61e7fa09d0>"
]
}
],
"prompt_number": 8
}
],
"metadata": {}
}
]
}
@quisqualis
Copy link

I could't find the points_demo.shp file

@rcolomina
Copy link

I've found a way to create a "shp" file example as follos:
https://gis.stackexchange.com/questions/147156/making-shapefile-from-pandas-dataframe

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment