import pandas as pd
import numpy as np
from bokeh.io import push_notebook, show, output_notebook, output_file
from bokeh.plotting import figure, curdoc
from bokeh.models import Title, Legend, NumeralTickFormatter, CustomJS, LinearAxis, Range1d, Panel, ColumnDataSource
from bokeh.models.widgets import CheckboxGroup, Slider, RangeSlider, Tabs, Button, Dropdown
from bokeh.layouts import row, column, widgetbox
from math import pi
Data
PD = pd.read_excel(“ts.xlsx”, sheet_name=‘ts’)
Format X-axis
PD[‘Period’]=PD[‘Period’].astype(str)
def make_data(df, seg_num):
df_temp = df[df.Segment == seg_num]
return ColumnDataSource(df_temp)
source = make_data(PD,1)
define a callback function
def callback(attr, old, new):
new_src = make_data(PD, new)
source.data.update(new_scr.data)
p = figure(plot_width=900, plot_height=300, y_axis_label='Actual Default Rate')
p0 = p.line('Period', 'Actual', source=source, color='blue', line_width=4, legend_label='Actual')
menu = [(‘Tab 1’, ‘1’), (‘Tab 2’, ‘2’)]
dropdown = Dropdown(label=“Model Segment”, menu=menu)
dropdown.on_click(callback)
curdoc().add_root(column(dropdown, p))