问题
I'm plotting a map with legends using the GeoPandas plotting function. When I plot, my legends appear in the upper right corner of the figure. Here is how it looks like:
I wanted to move the legends to the lower part of the graph. I would normally would have done something like this for a normal matplotlib plot:
fig, ax = plt.subplots(1, figsize=(4.5,10))
lima_bank_num.plot(ax=ax, column='quant_cuts', cmap='Blues', alpha=1, legend=True)
ax.legend(loc='lower left')
However, this modification is not taken into account.
回答1:
You can access the legend defined on the ax
instance with ax.get_legend()
. You can then update the location of the legend using the method set_bbox_to_anchor
. This doesn't provide the same ease of use as the loc
keyword when creating a legend from scratch, but does give control over placement. So, for your example, something like:
leg = ax.get_legend()
leg.set_bbox_to_anchor((0., 0., 0.2, 0.2))
A bit of documentation of set_bbox_to_anchor, though I don't find it extraordinarily helpful.
回答2:
This could be done using the legend_kwds
argument:
df.plot(column='values', legend=True, legend_kwds={'loc': 'lower right'});
来源:https://stackoverflow.com/questions/39816790/relocating-legend-from-geopandas-plot