Descartes
=========
Use Shapely_ or GeoJSON-like geometric objects as matplotlib paths and patches
.. image:: http://farm4.static.flickr.com/3662/4555372019_9bbed1f956_o_d.png
:width: 800
:height: 320
Requires: matplotlib, numpy, and optionally Shapely 1.2+.
Example::
from matplotlib import pyplot
from shapely.geometry import LineString
from descartes import PolygonPatch
BLUE = '#6699cc'
GRAY = '#999999'
def plot_line(ax, ob):
x, y = ob.xy
ax.plot(x, y, color=GRAY, linewidth=3, solid_capstyle='round', zorder=1)
line = LineString([(0, 0), (1, 1), (0, 2), (2, 2), (3, 1), (1, 0)])
fig = pyplot.figure(1, figsize=(10, 4), dpi=180)
# 1
ax = fig.add_subplot(121)
plot_line(ax, line)
dilated = line.buffer(0.5)
patch1 = PolygonPatch(dilated, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2)
ax.add_patch(patch1)
#2
ax = fig.add_subplot(122)
patch2a = PolygonPatch(dilated, fc=GRAY, ec=GRAY, alpha=0.5, zorder=1)
ax.add_patch(patch2a)
eroded = dilated.buffer(-0.3)
# GeoJSON-like data works as well
polygon = eroded.__geo_interface__
# >>> geo['type']
# 'Polygon'
# >>> geo['coordinates'][0][:2]
# ((0.50502525316941682, 0.78786796564403572), (0.5247963548222736, 0.8096820147509064))
patch2b = PolygonPatch(polygon, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2)
ax.add_patch(patch2b)
pyplot.show()
See also: examples/patches.py.
Descartes is not associated with the identically named and apparently defunct
project at http://descartes.sourceforge.net/.
.. _Shapely: http://gispython.org/lab/wiki/Shapely
Raw data
{
"_id": null,
"home_page": "http://bitbucket.org/sgillies/descartes/",
"name": "descartes",
"maintainer": "",
"docs_url": null,
"requires_python": "",
"maintainer_email": "",
"keywords": "matplotlib gis geojson geometry",
"author": "Sean Gillies",
"author_email": "sean.gillies@gmail.com",
"download_url": "https://files.pythonhosted.org/packages/1d/6f/81735a30432b74f41db6754dd13869021ccfed3088d1cf7a6cfc0af9ac49/descartes-1.1.0.tar.gz",
"platform": "",
"description": "Descartes\n=========\n\nUse Shapely_ or GeoJSON-like geometric objects as matplotlib paths and patches\n\n.. image:: http://farm4.static.flickr.com/3662/4555372019_9bbed1f956_o_d.png\n :width: 800\n :height: 320\n\nRequires: matplotlib, numpy, and optionally Shapely 1.2+.\n\nExample::\n\n from matplotlib import pyplot\n from shapely.geometry import LineString\n from descartes import PolygonPatch\n\n BLUE = '#6699cc'\n GRAY = '#999999'\n\n def plot_line(ax, ob):\n x, y = ob.xy\n ax.plot(x, y, color=GRAY, linewidth=3, solid_capstyle='round', zorder=1)\n\n line = LineString([(0, 0), (1, 1), (0, 2), (2, 2), (3, 1), (1, 0)])\n\n fig = pyplot.figure(1, figsize=(10, 4), dpi=180)\n\n # 1\n ax = fig.add_subplot(121)\n\n plot_line(ax, line)\n\n dilated = line.buffer(0.5)\n patch1 = PolygonPatch(dilated, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2)\n ax.add_patch(patch1)\n\n #2\n ax = fig.add_subplot(122)\n\n patch2a = PolygonPatch(dilated, fc=GRAY, ec=GRAY, alpha=0.5, zorder=1)\n ax.add_patch(patch2a)\n\n eroded = dilated.buffer(-0.3)\n\n # GeoJSON-like data works as well\n\n polygon = eroded.__geo_interface__\n # >>> geo['type']\n # 'Polygon'\n # >>> geo['coordinates'][0][:2]\n # ((0.50502525316941682, 0.78786796564403572), (0.5247963548222736, 0.8096820147509064))\n patch2b = PolygonPatch(polygon, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2)\n ax.add_patch(patch2b)\n\n pyplot.show()\n\n\nSee also: examples/patches.py.\n\nDescartes is not associated with the identically named and apparently defunct\nproject at http://descartes.sourceforge.net/.\n\n.. _Shapely: http://gispython.org/lab/wiki/Shapely\n\n\n\n",
"bugtrack_url": null,
"license": "BSD",
"summary": "Use geometric objects as matplotlib paths and patches",
"version": "1.1.0",
"split_keywords": [
"matplotlib",
"gis",
"geojson",
"geometry"
],
"urls": [
{
"comment_text": "",
"digests": {
"md5": "fe9c91d7ca7f24d84ad0aa3eb8087868",
"sha256": "b7e412e7e6e294412f1d0f661f187babc970088c2456089e6801eebb043c2e1b"
},
"downloads": -1,
"filename": "descartes-1.1.0-py2-none-any.whl",
"has_sig": false,
"md5_digest": "fe9c91d7ca7f24d84ad0aa3eb8087868",
"packagetype": "bdist_wheel",
"python_version": "py2",
"requires_python": null,
"size": 5803,
"upload_time": "2017-01-17T15:37:01",
"upload_time_iso_8601": "2017-01-17T15:37:01.245628Z",
"url": "https://files.pythonhosted.org/packages/e7/29/b23b57c92a1cf58da25070c10cab90fb38de22523ef7bdc76acdad717645/descartes-1.1.0-py2-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "eda7c3b1cef798ee4878d96c718b2cef",
"sha256": "4c62dc41109689d03e4b35de0a2bcbdeeb81047badc607c4415d5c753bd683af"
},
"downloads": -1,
"filename": "descartes-1.1.0-py3-none-any.whl",
"has_sig": false,
"md5_digest": "eda7c3b1cef798ee4878d96c718b2cef",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": null,
"size": 5804,
"upload_time": "2017-01-17T15:37:02",
"upload_time_iso_8601": "2017-01-17T15:37:02.525069Z",
"url": "https://files.pythonhosted.org/packages/e5/b6/1ed2eb03989ae574584664985367ba70cd9cf8b32ee8cad0e8aaeac819f3/descartes-1.1.0-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"md5": "ac608090f3c9f6e0ce856fdc29944096",
"sha256": "135a502146af5ed6ff359975e2ebc5fa4b71b5432c355c2cafdc6dea1337035b"
},
"downloads": -1,
"filename": "descartes-1.1.0.tar.gz",
"has_sig": false,
"md5_digest": "ac608090f3c9f6e0ce856fdc29944096",
"packagetype": "sdist",
"python_version": "source",
"requires_python": null,
"size": 3525,
"upload_time": "2017-01-17T15:37:03",
"upload_time_iso_8601": "2017-01-17T15:37:03.945069Z",
"url": "https://files.pythonhosted.org/packages/1d/6f/81735a30432b74f41db6754dd13869021ccfed3088d1cf7a6cfc0af9ac49/descartes-1.1.0.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2017-01-17 15:37:03",
"github": false,
"gitlab": false,
"bitbucket": true,
"bitbucket_user": "sgillies",
"bitbucket_project": "descartes",
"lcname": "descartes"
}