Мне нужно заполнить мой многоугольник, используя тепловую карту. Для источника полигона я использую 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>
. Любая помощь в этом отношении будет глубоко оценена.
в качестве побочного примечания. Вы получите лучшие ответы, если код легче читать. Я думаю, что ваша проблема может быть уменьшена до <10 LOC и быть случайными данными для подачи, чтобы кто-нибудь мог скопировать/вставить ее для тестирования. – tacaswell