Это моя первая попытка создать карту мира и использовать GeoJSONDataSource. Я пытаюсь присвоить разные цвета патчам, основанным на значении «континента» страны в его свойствах.Choropleth Map, Bokeh - Назначение цветов патчей на основе значений свойств
Можно ли сделать что-то по следующим направлениям:
p.patches(... fill_color= colours['continent'])
Где цвет представляет собой словарь с именами континента как ключи, и «континент» является значением континента страны в данных в формате JSON.
Это мой текущий код:
from bokeh.plotting import figure, output_file, show
from bokeh.io import output_notebook
import numpy as np
from bokeh.models import GeoJSONDataSource
with open('data.geojson') as c:
countries = (c.read())
geo_source = GeoJSONDataSource(geojson=countries)
colours = {'Europe': 'red', 'Oceania': 'purple', 'Asia': 'blue', 'Africa': 'pink', "South America": 'green', "Antarctica": 'yellow', 'North America': 'orange', "Seven seas (open ocean)": 'red'}
p = figure(height=450, width=900, lod_threshold=1)
p.patches(xs='xs', ys='ys', fill_color='blue', source=geo_source)
p.multi_line(xs='xs', ys='ys', line_color='white', line_width=0.1, source=geo_source)
show(p)
EDIT
Я попытался приближаемся это немного по-другому, установив атрибут fill_color заплатки для массива цветов, как так:
a =[colours[c['properties']['continent']] for c in json.loads(countries)['features']]
При запуске этого кода в ноутбуке Jupyter появляется следующее сообщение об ошибке:
Javascript error adding output! Error: attempted to retrieve property array for nonexistent field 'fill_color' See your browser Javascript console for more details.