Перемещение легенды из сюжета GeoPandas
Я строю карту с легендами, используя функцию построения GeoPandas. Когда я строю сюжет, мои легенды появляются в правом верхнем углу фигуры. Вот как это выглядит:
Я хотел переместить легенды в нижнюю часть графика. Обычно я сделал бы что-то подобное для обычного сюжета matplotlib:
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')
Однако эта модификация не принимается во внимание.
4 ответа
Вы можете получить доступ к легенде, определенной на ax
экземпляр с ax.get_legend()
, Затем вы можете обновить местоположение легенды, используя метод set_bbox_to_anchor
, Это не обеспечивает такую же простоту использования, как loc
Ключевое слово при создании легенды с нуля, но дает контроль над размещением. Итак, для вашего примера, что-то вроде:
leg = ax.get_legend()
leg.set_bbox_to_anchor((0., 0., 0.2, 0.2))
Немного документации по set_bbox_to_anchor, хотя я не нахожу это чрезвычайно полезным.
Это можно сделать с помощью legend_kwds
аргумент:
df.plot(column='values', legend=True, legend_kwds={'loc': 'lower right'});
Если у вас есть горизонтальная легенда, и вы пытаетесь просто уменьшить разрыв между легендой и сюжетом, я рекомендую
colorbar
подход подробно описан на /questions/23970277/klasterizatsiya-latov-longov-v-baze-dannyih/23970297#23970297 вместе с передачей
pad
legend_kwd
аргумент:
legend_kwds={"orientation": "horizontal", "pad": 0.01}
Похоже, что решение не работает с последней версией геопанды и matplotlib... ax.get_legend() возвращается с NoneType