Мы с коллегой пытались установить пользовательские метки легенды, но пока не смогли.Код и подробности ниже - любые идеи приветствуются!
Записная книжка: пример игрушки, загруженный сюда
Цель: изменить значения коэффициента по умолчанию, используемые в легенде, на соответствующие процентные значения
Проблема: невозможно выяснить, как получить доступ к объекту легенды или передать legend_kwds
в geopandas.GeoDataFrame.plot()
Данные: Районы метрополитена KCMO
Выдержки из примера с игрушкой
Шаг 1: чтение данных
# imports
import geopandas as gpd
import matplotlib.pyplot as plt
%matplotlib inline
# read data
gdf = gpd.read_file('kcmo_counties.geojson')
Вариант 1 - получить легенду из ax
, как предложено здесь :
ax = gdf.plot('val', legend=True)
leg = ax.get_legend()
print('legend object type: ' + str(type(leg))) # <class NoneType>
plt.show()
Вариант 2: передать legend_kwds
словарь - я предполагаю, что я делаю что-то здесь не так (и явно не до конца понимаю основные детали), но _doc_
из plotting.py Геопанды. - для которого GeoDataFrame.plot () является просто оболочкой - похоже, не проходит ...
# create number of tick marks in legend and set location to display them
import numpy as np
numpoints = 5
leg_ticks = np.linspace(-1,1,numpoints)
# create labels based on number of tickmarks
leg_min = gdf['val'].min()
leg_max = gdf['val'].max()
leg_tick_labels = [str(round(x*100,1))+'%' for x in np.linspace(leg_min,leg_max,numpoints)]
leg_kwds_dict = {'numpoints': numpoints, 'labels': leg_tick_labels}
# error "Unknown property legend_kwds" when attempting it:
f, ax = plt.subplots(1, figsize=(6,6))
gdf.plot('val', legend=True, ax=ax, legend_kwds=leg_kwds_dict)
ОБНОВЛЕНИЕ Просто наткнулся этот разговор о добавлении в legend_kwds
- и эта другая ошибка? , которая ясно заявляет legend_kwds
не было в последней версии GeoPandas (v0.3.0).Предположительно, это означает, что нам нужно будет скомпилировать из источника GitHub master
, а не устанавливать с помощью pip / conda ...