我需要使用热图填充我的多边形。对于我使用的多边形来源shapefile
。这是我的代码:
import shapefile
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.patches as patches
import matplotlib.cm as mcm
import matplotlib.image as mpimg
from matplotlib.patches import Polygon
from matplotlib.collections import PatchCollection
import pylab as plb
fig = plt.figure()
ax = fig.add_subplot(111)
ax.set_frame_on(False)
sf = shapefile.Reader("./data/boundary-polygon")
recs = sf.records()
shapes = sf.shapes()
print shapes[1].__dict__
Nshp = len(shapes)
cns = []
for nshp in xrange(Nshp):
cns.append(recs[nshp][1])
cns = np.array(cns)
cm = mcm.get_cmap('Dark2')
cccol = cm(1.*np.arange(Nshp)/Nshp)
# facecolor=cccol[nshp,:],
for nshp in xrange(Nshp):
ptchs = []
pts = np.array(shapes[nshp].points)
prt = shapes[nshp].parts
par = list(prt) + [pts.shape[0]]
for pij in xrange(len(prt)):
ptchs.append(Polygon(pts[par[pij]:par[pij+1]], alpha=1))
ax.add_collection(PatchCollection(ptchs,facecolors=((1, 1, 1, 1),),alpha=0.1 ,linewidths=1))
ax.set_xlim(54,67)
ax.set_ylim(50,57)
facecolors=((1, 1, 1, 1),)
我想改成facecolors=<image_of_my_heat_map>
。对此的任何帮助将不胜感激。