Python Bokeh, как скрыть одну и ту же строку от нескольких легенд - PullRequest
0 голосов
/ 12 ноября 2019

У меня есть этот код, который создает график боке, где все графики панорамируются и масштабируются вместе. Я хочу иметь возможность скрывать одну и ту же именованную линию 'line1' одновременно на всех 3 графиках, когда я щелкаю элемент легенды line1 (или необязательный дополнительный виджет или флажок за пределами графиков) вместо того, чтобы щелкать по ним по отдельности. Как мне это сделать?

Строка 1 может создаваться каждый раз из другого источника данных, то есть значения x для всех строк одинаковы, но значения y могут различаться (график 0, строка1)и (участок 1, строка 1)

Токовый выход:

plot with all graphs

Требуемый выход:

enter image description here

from bokeh.io import output_file, show,save
from bokeh.layouts import column
from bokeh.plotting import figure
from bokeh.models import ColumnDataSource

output_file("panning.html")
data=[]
x = list(range(11))
y0 = x
y1 = [10-xx for xx in x]
y2 = [abs(xx-5) for xx in x]
source = ColumnDataSource(data=dict(x=x, y0=y0, y1=y1,y2=y2))
for i in range(3):
    p = figure(title="Basic Title", plot_width=300, plot_height=300)
    if len(data):
        p.x_range=data[0].x_range
        p.y_range=data[0].y_range

    p.circle('x', 'y0', size=10, color="navy", alpha=0.5,legend_label='line1', source=source)

    p.triangle('x', 'y1', size=10, color="firebrick", alpha=0.5,legend_label='line2', source=source)

    p.square('x', 'y2', size=10, color="olive", alpha=0.5,legend_label='line3', source=source)
    p.legend.location='top_right'
    p.legend.click_policy = "hide"
    data.append(p)
plot_col=column(data)
# show the results
show(plot_col)

save(plot_col)
...