Элементы легенды связывают метку со списком средств визуализации, а не с цветами.
legend = Legend(items=[(label,list_of_GlyphRenderers)])
Если в списке несколько глифрендеров, если они одного типа, будет отображаться только цвет первого.
Если первый использует несколько цветов, будет отображаться только первый цвет.
Если глифрендеры различного типа (например, круг и линия), то они будут объединены в маленький значок легенды.
Тот факт, что к одному и тому же элементу легенды может быть подключено много средств визуализации, в основном полезен для этого и для управления видимостью нескольких визуализаторов одновременно при включении интерактивной легенды.
Здесь у вас есть только один рендерер circle()
, но с разными цветами, поэтому будет использоваться только первый цвет. Я не знаю, как напрямую настроить значки легенд.
Вы можете сделать отдельный звонок в Круг для каждой точки
from bokeh.io import show
from bokeh.models import Legend
from bokeh.plotting import figure
names = ["Jim","Bob","Assia"]
colors = ["red","blue","green"]
fig = figure()
items = []
for i in range(3):
items += [(names[i],[fig.circle(i,i,color=colors[i],size=20)])]
fig.add_layout(Legend(items=items),'right')
show(fig)
Но использование Hovertool, вероятно, лучше, если у вас много точек.