ax = fig.add_subplot(111, axisbg='w', frame_on=True)
fig.set_size_inches(18.5, 10.5)
colors = plt.cm.rainbow(np.linspace(0, 1, 20))
current_plot_range = 0
previous_plot_range = 0
for i, c in enumerate(colors):
    previous_plot_range += current_plot_range
current_plot_range = labels[labels == i].size
m.scatter([geom.x for geom in map_points[previous_plot_range:
    previous_plot_range + current_plot_range]], [geom.y for geom in
    map_points[previous_plot_range:previous_plot_range + current_plot_range
    ]], 20, lw=0.25, marker='o', color=c, label=i, alpha=0.9, antialiased=
    True, zorder=3)
plt.legend()
m.fillcontinents(color='#555555')
Сделать легенду соответствующей цветам точек рассеяния в matplotlib