Цветовая схема Geopandas, определенная пользователем, удаляет цвета

#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)),
)
  

Я не совсем понимаю, что я здесь делаю. В принципе, я думаю, что я предотвращаю поведение по умолчанию при нормализации диапазона цветов до уменьшенного диапазона чисел. Это смесь понимания исходного кода и простых проб и ошибок. По крайней мере, это работает для моих нужд.