在绘制shapefile时选择某些索引

时间:2016-03-14 13:41:47

标签: python numpy matplotlib shapefile matplotlib-basemap

我的问题

shapefile xxx包含serval多边形,我想绘制其中的一部分 所以,我打字:

## reading the xxx.shp
map.readshapefile('xxx','xxx',zorder =1,)
patches=[]

## generating the indice which mean I want to plot these polygon.
indice = [int(i) for i in np.array([5,6,7,8,11,14,17])]

for info, shape in zip(map.xxx_info, map.xxx):
    x,y=zip(*shape)
    patches.append( Polygon(np.array(shape), True) )      
ax.add_collection(PatchCollection(patches[indice], facecolor= \
                  'none',edgecolor='grey', linewidths=1.5, zorder=2,alpha = 0.8))       

但错误是这样的:

  

TypeError:llist索引必须是整数,而不是list。

我不知道如何修复它。希望得到你的帮助!

1 个答案:

答案 0 :(得分:1)

如果你仔细观察,你会发现你正试图在{$ 1}}中使用indice作为索引。

patches

问题是ax.add_collection(PatchCollection(patches[indice], facecolor= \ 'none',edgecolor='grey', linewidths=1.5, zorder=2,alpha = 0.8)) indice,不能以这种方式使用。

从您的代码中,您似乎正在尝试为指定的索引创建补丁。为此,我将创建一个新的修补程序列表,它是list中包含的修补程序的子集。然后使用此子集创建patches

PatchCollection