私は多くのポリゴン座標を持ち、各ポリゴン領域はスコア値に関連付けられています。ヒートマップのような2Dプロットを使って、これらのポリゴンとその関連スコアを視覚化しようとしています。私のコードでは、このようなプロットが可能ですが、PatchCollectionに設定した色に基づいてカラーマップを表示する方法がわかりません。また、Polygonオブジェクトのエッジカラーを指定しましたが、表示されません。プロットに使用しているデータはhereです。カラーバーの作成とポリゴンパッチコレクションのエッジグリッドの設定Matplotlib
import shapely
import pickle as pkl
tiles = pkl.load(open("polygons.pkl",'r'))
area_lst=[]
for tile in tiles:
area_lst.append(shapely.geometry.Polygon(tile).area)
sorted_ascend_tile_by_size= list(np.array(tiles)[np.argsort(area_lst)[::-1]])
gammas=np.random.random(len(tiles))
from matplotlib.collections import PatchCollection
from matplotlib.patches import Polygon
fig,ax = plt.subplots(1)
patches = []
cmap = plt.get_cmap('cool')
colors = cmap(gammas)
for tile_idx in range(len(tiles)):
polygon = Polygon(sorted_ascend_tile_by_size[tile_idx],closed=True,alpha=0.8,linewidth=1,edgecolor='black',fill=False,zorder=1)
patches.append(polygon)
collection = PatchCollection(patches)
pcollection = ax.add_collection(collection)
collection.set_color(colors)
ax.autoscale_view()
これは、プロット、そのコードの出力である:
私はScalarMappableオブジェクトを使用して、カラーバーを追加しようとしましたが、私はエラーTypeError: You must first set_array for mappable
を得る: