#python #pandas #geopandas
#python #панды #геопанды
Вопрос:
Я ожидал получить легенду о трех цветах: зеленом, желтом и красном, даже если нижний диапазон пуст (без чисел ниже 10). Вместо этого GeoPandas отбрасывает желтый цвет и дважды использует зеленый.
Это ошибка или я пропустил параметр?
import pandas as pd
import geopandas
from matplotlib.colors import ListedColormap
colors = ['green', 'yellow', 'red']
bins = [10, 30]
numbers = [15, 25, 35, 35, 55]
ny = geopandas.read_file(geopandas.datasets.get_path('nybb'))
numbers = pd.Series(numbers, name='numbers')
ny = pd.concat([ny, numbers], axis=1)
ny.plot(
legend=True,
column='numbers',
scheme="user_defined",
cmap = ListedColormap(colors),
classification_kwds={'bins': bins},
)
Ответ №1:
Я смог исправить эту проблему norm
, установив параметр:
import pandas as pd
import geopandas
from matplotlib.colors import ListedColormap
from matplotlib.colors import Normalize
colors = ['green', 'yellow', 'red']
bins = [10, 30]
numbers = [15, 25, 35, 35, 55]
ny = geopandas.read_file(geopandas.datasets.get_path('nybb'))
numbers = pd.Series(numbers, name='numbers')
ny = pd.concat([ny, numbers], axis=1)
ny.plot(
legend=True,
column='numbers',
scheme="user_defined",
cmap=ListedColormap(colors),
classification_kwds={ 'bins': bins, },
norm=Normalize(0, len(colors)),
)
Я не совсем понимаю, что я здесь делаю. В принципе, я думаю, что я предотвращаю поведение по умолчанию при нормализации диапазона цветов до уменьшенного диапазона чисел. Это смесь понимания исходного кода и простых проб и ошибок. По крайней мере, это работает для моих нужд.