Несколько легенд отображаются, когда я использую Bokeh и переключатель для переключения между сюжетами.Как удалить старые легенды и показать только текущую активную легенду?
Я предоставляю упрощенный код, и я работаю с CategoryoricalColorMappers в полной версии, где цвета меняются в зависимости от факторов.Я пробовал legend.visible = False варианты безуспешно.
from bokeh.plotting import figure, show,reset_output
from bokeh.io import output_notebook, curdoc
from bokeh.models import ColumnDataSource, Range1d, LabelSet, Label,CustomJS,CategoricalColorMapper
from bokeh.layouts import row,widgetbox
from bokeh.models.widgets import CheckboxGroup, RadioGroup,RadioButtonGroup
import pandas as pd
import numpy as np
#create data
source_points = ColumnDataSource(dict(
x=[1, 2, 1, 2, 1, 2,1,2],
y=[1, 1, 2, 2, 3, 3,4,4],
category=['hi', 'lo', 'hi', 'lo', 'hi', 'lo', 'hi', 'lo'],
size=['big','small','big','small','big','small','big','small'],
weight=['light','heavy','very heavy','light','heavy','very heavy','light','heavy'] ))
#create graph
p=figure(x_range=(0, 4), y_range=(0, 5))
p.square(x='x',y='y',source=source_points, legend='category')
p.legend.orientation = "horizontal"
p.legend.location = "top_left"
#Adding Radio button
radio = RadioButtonGroup(labels=['category','weight','size'], active=0)
inputs = widgetbox(radio)
#update plots
def update_plot(attrname, old, new):
plt = radio.active
print(plt)
# Generate the new curve
if plt is 0:
p.square(x='x',y='y',source=source_points, legend='category',color='blue')
p.legend.orientation = "horizontal"
p.legend.location = "top_left"
elif plt is 1:
p.square(x='x',y='y',source=source_points, legend='weight',color='blue')
p.legend.orientation = "horizontal"
p.legend.location = "top_left"
else:
p.square(x='x',y='y',source=source_points, legend='size',color='black')
p.legend.orientation = "horizontal"
p.legend.location = "top_left"
# event and function linkage
radio.on_change('active', update_plot)
#link everything together
curdoc().add_root(row(inputs, p, width=800))
Я хочу показать только активную легенду и скрыть / удалить старую легенду.Любой совет / помощь в вопросе легенды боке приветствуется?