我正在将一个Shapely的MultiPolygon转换成一个PatchCollection,首先为每个Polygon着色:
# ldn_mp is a MultiPolygon
cm = plt.get_cmap('RdBu')
num_colours = len(ldn_mp)
fig = plt.figure()
ax = fig.add_subplot(111)
minx, miny, maxx, maxy = ldn_mp.bounds
w, h = maxx - minx, maxy - miny
ax.set_xlim(minx - 0.2 * w, maxx + 0.2 * w)
ax.set_ylim(miny - 0.2 * h, maxy + 0.2 * h)
ax.set_aspect(1)
patches = []
for poly in ldn_mp:
colour = cm(1. * len(filter(poly.contains, points)) / num_colours)
patches.append(PolygonPatch(poly, fc=colour, ec='#555555', lw=0.2, alpha=1., zorder=1))
pc = PatchCollection(patches, match_original=True)
ax.add_collection(pc)
ax.set_xticks([])
ax.set_yticks([])
plt.title("Density of NO$^2$ Sensors by Borough")
plt.tight_layout()
plt.show()
但是我想在我的绘图中添加一个基于PatchCollection颜色的色条。我不确定如何做到这一点;我是否在创建pc
时传递关键字?然后如何使用我已经使用的颜色调用set_array()
?
colours
),然后创建一个ScalarMappable,执行set_array
和set_clim
。创建PatchCollection后,我将其facecolor设置为colormap(colours)
,效果非常好。谢谢! - urschrei