Как обрабатывать перекрытия в шейп-файле с помощью карты цветов Bokeh - PullRequest
0 голосов
/ 03 февраля 2019

Я хотел бы создать карту хлороплетов с Боке.У меня есть готовый набор данных с департаментами Франции и их населением.Я также скачал шейп-файл французских департаментов.

После первого испытания я обнаружил, что мой поддон неправильно наносится на департаменты (некоторые темнее, чем другие с меньшей численностью населения).

Мне это показалось довольно странными установить одинаковое население во всех департаментах просто для проверки, и я обнаружил, что не все департаменты имеют одинаковый цвет!Найдите ниже мой код

data = gdf.join(df)
# apply same population per department
data.population = 5678

geo_src = bm.GeoJSONDataSource(geojson=data.to_json())

# set up a log colormap
cmap = bm.LogColorMapper(
    palette=bokeh.palettes.Blues9[::-1], # reverse the palette
)


# define web tools
TOOLS = "pan,wheel_zoom,box_zoom,reset,hover,save"

# set up bokeh figure
p = figure(
    title="Population", 
    tools=TOOLS,
    toolbar_location="below",
    x_axis_location=None, 
    y_axis_location=None, 
    width=800, 
    height=800
)

# remove the grid
p.grid.grid_line_color = None

# core part !
p.patches(
    'xs', 'ys', 
    fill_alpha=0.7, 
    fill_color={'field': 'population', 'transform': cmap},
    line_color='black', 
    line_width=0.5, 
    source=geo_src
)

# show plot
show(p)

Смотрите результат,

enter image description here

Я предполагаю, что эти темные отделы имеют формы перекрытия и Bokehприменил в два раза больше населения, делая их темнее ...

Я пытался найти способ удалить наложения из шейп-файла (пока не удается), но мне интересно, есть ли способ настроить Bokeh, чтобы спросить егоне суммировать совпадения?

1 Ответ

0 голосов
/ 04 февраля 2019

Хорошо, мне наконец-то удалось понять, что я сделал неправильно.

Речь идет не о перекрытии или чем-то подобном (я использовал QGIS, чтобы подтвердить, что перекрытия нет).Вместо этого я заметил, что департаменты, более темные, чем другие, на самом деле разделены на несколько частей!

И вот в чем дело;при применении патчей Bokeh я использовал fill_alpha меньше 1. Мне просто нужно было установить этот параметр равным 1, чтобы из всех частей, из которых сделан отдел, цвет был одинаковым!

p.patches(
    'xs', 'ys', 
    fill_alpha=1, 
    fill_color={'field': 'population', 'transform': cmap},
    line_color='black', 
    line_width=0.5, 
    source=geo_src
)
...