使用几何对象作为matplotlib路径和面片

descartes的Python项目详细描述


使用Shapely或类似geojson的几何对象作为matplotlib路径和补丁

http://farm4.static.flickr.com/3662/4555372019_9bbed1f956_o_d.png

需要:matplotlib、numpy和可选的shapely 1.2+。

示例:

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()

另请参见:examples/patches.py。

笛卡尔与同名的显然已不复存在的 项目位于http://descartes.sourceforge.net/

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Android光标。getString(int)被卡住   java未满足链接错误:无法从加载程序加载X   数组元素的java算法   Java OpenGL 4.4:存储/推送,弹出当前程序管道   变量为什么java编译器不能识别已初始化的字段?   java如何获得完成活动的剩余时间?   java字符串输入无法正常工作   Java:在不使用BigInteger的情况下添加大数   为什么在导入安卓源代码中存在的一些java文件时出现“error not find symbol”?   java从特定索引后的列表中删除所有元素   java ViewPager内部片段返回IllegalStateException   即使使用doReturn,java Mockito也会调用stubbed方法   java如何处理hibernate映射列错误?   java选择安卓1.5还是安卓2.2?(我是初学者)