Перемещение легенды из сюжета 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

Другие вопросы по тегам