Я пытаюсь добавить легенду к фигуре патчей Bokeh, но в итоге получаю только один элемент легенды (и с неправильной меткой).
У меня есть файл формы с полигонами.Каждый полигон имеет атрибут под названием «категория», который может принимать значения «A», «B», «C», «D» и «E».Я преобразую файл формы в geojson, а затем создаю фигуру патчей Bokeh, используя CategoryorColorMapper, чтобы добавить цвет к каждому многоугольнику в зависимости от «категории», в которой он находится. Теперь я хочу, чтобы легенда показывала пять вариантов категорий и их соответствующие цвета.
Вот мой код:
import geopandas as gpd
from bokeh.io import show, output_notebook, output_file, export_png
from bokeh.models import GeoJSONDataSource, CategoricalColorMapper, Legend, LegendItem
from bokeh.plotting import figure, reset_output
from bokeh.transform import factor_cmap
import selenium
import numpy as np
gdf = gpd.GeoDataFrame.from_file("test.shp")
gdf_json = gdf.to_json()
source_shape = GeoJSONDataSource(geojson=gdf_json)
cmap = CategoricalColorMapper(palette=["black", "purple", "pink", "brown", "blue"], factors=['A','B','C','D', 'E'])
p = figure(height=500, match_aspect=True,
h_symmetry=False, v_symmetry=False, min_border=0)
p.patches('xs', 'ys', source=source_shape, fill_color={'field': 'category', 'transform': cmap},
line_color='black', line_width=0.5, legend='category')
export_png(p, filename="map.png")
Тем не менее, я получаю следующий вывод: map.png output
Легенда показывает только одинпункт, с меткой «категория», а не фактические названия категорий.Как я могу исправить это так, что легенда показывает все 5 категорий с их метками (A, B, C, D, E)?