Скрыть аннотацию рядом с легендой в Боке - PullRequest
0 голосов
/ 14 апреля 2020

У меня есть интерактивный график Боке, который может скрывать определенные круговые графики при нажатии на Легенду. Теперь, когда я отключаю график, щелкая по нему, построенные круги исчезают, но аннотации остаются. Может кто-нибудь объяснить мне, как я могу включить и выключить все вместе или у кого-нибудь есть быстрое решение?

with

Вот изображение, когда оно выключено:

without

Я рисую круги + легенду со следующим кодом:

q.circle('lng', 'lat', source = source2, name='vri', color='red', size=5, hover_line_color="black", legend_label = 'VRI')

vri_labels = LabelSet(x='lng', y='lat', text='kruispuntn', x_offset=5, y_offset=5, source=source2, text_font_size = '10pt')

q.legend.location = "bottom_left"
q.legend.click_policy="hide"

q.add_layout(vri_labels)

show(q)

1 Ответ

1 голос
/ 14 апреля 2020

Вы можете связать свойство visible с помощью обратного вызова CustomJS:

from bokeh.io import show
from bokeh.models import ColumnDataSource, LabelSet, CustomJS
from bokeh.plotting import figure

p = figure()
cds = ColumnDataSource(data=dict(x=[0, 1], y=[0, 1], z=[1, 0]))

for var, params in [('y', {}),
                    ('z', {'color': 'green'})]:
    renderer = p.circle('x', var, source=cds, legend_label=var, size=20, **params)
    label_set = LabelSet(x='x', y=var, text=var, source=cds, x_offset=5, y_offset=5)
    p.add_layout(label_set)
    renderer.js_on_change('visible', CustomJS(args=dict(ls=label_set),
                                              code="ls.visible = cb_obj.visible;"))

p.legend.click_policy = 'hide'

show(p)
...