Как я уже писал в комментариях, я предлагаю использовать Tabs
Другой вариант - создать приложение сервера Bokeh, которое будет динамически удалять / добавлять график в макете.
Запустите приведенный ниже код в терминале (Bokeh v1.1.0), используя bokeh serve --show app.py
:
from bokeh.models import ColumnDataSource, Column, Select
from bokeh.plotting import curdoc, figure, Figure
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(5, 2), columns = ['plot1', 'plot2'])
source = ColumnDataSource(df)
def callback(attr, old, new):
if new == "plot1":
layout.children.remove(p2)
layout.children.append(p1)
if new == "plot2":
layout.children.remove(p1)
layout.children.append(p2)
select = Select(value = "plot1", options = ["plot1", "plot2"])
select.on_change('value', callback)
layout = Column()
layout.children.append(select)
p1 = figure(title = 'plot1')
p1.line(source = source, x = 'index', y = 'plot1')
p2 = figure(title = 'plot2')
p2.line(source = source, x = 'index', y = 'plot2')
layout.children.append(p1)
curdoc().add_root(layout)