(Первый вопрос, так что извинения)
Bokeh 1.3.4
Ситуация:
Я пытаюсь нанести на карту Bokeh MultiLine, используя CDSView, и все существующие примеры кажутсяиспользовать объект "figure", у которого есть помощник (multi_line), который принимает представление в качестве аргумента. Я делаю это поверх GMAPPlot, который не поддерживает multi_line (только MultiLine) (см. Ниже). В закомментированной строке выдается сообщение о том, что GMAPPlot не поддерживает multi_line.
plot = GMapPlot(
x_range=Range1d(), y_range=Range1d(), map_options=map_options, sizing_mode='scale_height'
)
.
.
.
sel_sa1s = []
v_bf = [True if sa1_val in sel_sa1s else False for sa1_val in v_source.data['SA1']]
v_view = CDSView(source=v_source, filters=[BooleanFilter(v_bf)])
v_ml = MultiLine(xs="xs",ys="ys",line_color="black", line_width="w")
#v_rend = plot.multi_line(xs="xs",ys="ys",line_color="black", line_width="w", source=v_source, view=v_view)
v_rend = plot.add_glyph(v_source, v_ml, name='votes')
Приведенный выше фрагмент кода работает и отображает всю сеть (очень перегруженную), поскольку нет фильтра. Я хочу, чтобы фильтр был инициализирован, чтобы скрыть все, а затем, когда пользователь нажимает на область (SA1), он отображает сеть, связанную с этим SA1.
На самом деле я могу это сделать, но толькопо одной области за раз, и было бы гораздо эффективнее иметь возможность загружать всю карту и использовать отфильтрованное представление для управления отображением подсетей.
Кажется, что GMAPPlot нравится только шаблон:
- создать глиф
- добавить глиф
Итак, мой вопрос - как использовать CDSView в этой среде (как добавить его врендер?)
Скриншот нефильтрованного набора данных