Вам нужно использовать пути и патчи matplotlib, и есть модуль Python, предназначенный для построения полигонов из шейп-файлов с использованием этих функций Descartes .
Поскольку Pyshp (shapefile) имеет соглашение geo_interface ( New geo_interface для PyShp ), вы можете использовать его.
polys = shapefile.Reader("polygon")
# first polygon
poly = polys.iterShapes().next().__geo_interface__
print poly
{'type': 'Polygon', 'coordinates': (((151116.87238259654, 135890.8706318218), (153492.19971554304, 134793.3055883224), (153934.50204650551, 133892.31935858406), (152623.97662143156, 131811.86024627919), (150903.91200102202, 130894.49244872745), (149347.66305874675, 132991.33312884573), (149151.08424498566, 134383.76639298678), (151116.87238259654, 135890.8706318218)),)}
Результатом является GeoJSON-представление геометрии, и вы можете использовать решение Как построить геоданные, используя matplotlib / python
import matplotlib.pyplot as plt
from descartes import PolygonPatch
BLUE = '#6699cc'
fig = plt.figure()
ax = fig.gca()
ax.add_patch(PolygonPatch(poly, fc=BLUE, ec=BLUE, alpha=0.5, zorder=2 ))
ax.axis('scaled')
plt.show()