Here are the examples of the python api bokeh.models.widgets.DateRangeSlider taken from open source projects. By voting up you can indicate which examples are most useful and appropriate.
4 Examples
0
View Source File : bokeh_server.py
License : MIT License
Project Creator : karlicoss
License : MIT License
Project Creator : karlicoss
def bokeh_main_2():
import sys
src = Path(__file__).absolute().parent / 'src'
sys.path.insert(0, str(src))
from bokeh.layouts import layout # type: ignore
from bokeh.models.widgets import Tabs, Panel # type: ignore
from bokeh.plotting import figure # type: ignore
from dashboard.core.bokeh import test_scatter_matrix
import holoviews as hv
f1 = hv.render(test_scatter_matrix())
f2 = figure()
f2.circle([0,0,2],[4,-1,1])
# todo need something more lazy?
from dashboard.data import sleep_dataframe
from dashboard.sleep import plot_sleep
# TODO would be cool to display logs in the frontend and also currently evaluated function?
# although pehaps it's easier to just always keep logs open?
from bokeh.models.widgets import DateRangeSlider # type: ignore
from datetime import date
drs = DateRangeSlider(
title="Date Range: ",
start=date(2017, 1, 1),
end=date.today(),
value=(date(2017, 9, 7), date(2017, 10, 15)),
step=1,
)
def update(attr, old, new):
print(attr, old, new)
from bokeh.models import CustomJS # type: ignore
# todo see https://docs.bokeh.org/en/latest/docs/gallery/slider.html
update_js = CustomJS(
args=dict(drs=drs),
code='''
console.log("HIIII");
'''
)
drs.on_change('value', update)
drs.js_on_change('value', update_js)
l1 = layout([[f1, drs]], sizing_mode='fixed')
l2 = layout([[f2]], sizing_mode='fixed')
tabs = Tabs(tabs=[
Panel(child=l1 , title='This is Tab 1' ),
Panel(child=l2 , title='This is Tab 2' ),
# Panel(child=layout([[sp]]), title='Sleep dataframe'),
])
curdoc().add_root(tabs)
def main():
0
View Source File : bokeh.py
License : MIT License
Project Creator : karlicoss
License : MIT License
Project Creator : karlicoss
def date_slider(p, *, dates=None, date_column='dt'):
# todo a bit crap, but kinda works.. not sure what's the proper way?
# maybe they aren't computed before show()??
# p.x_range.on_change('start', lambda attr, old, new: print("Start", new))
# p.x_range.on_change('end', lambda attr, old, new: print("End", new))
if dates is None:
graphs = p.renderers
# todo autodetect by type instead of name?
dts = np.concatenate([g.data_source.data[date_column] for g in graphs])
# FFS... apparently no easier way
sdate = pd.Timestamp(np.min(dts)).to_pydatetime()
edate = pd.Timestamp(np.max(dts)).to_pydatetime()
else:
sdate = min(dates)
edate = max(dates)
# todo not sure if should use today?
edate += timedelta(days=5)
from bokeh.models.widgets import DateRangeSlider # type: ignore
ds = DateRangeSlider(
title="Date Range: ",
start=sdate,
end=edate,
value=(sdate, edate),
step=1,
)
from bokeh.models import CustomJS # type: ignore
# TODO hmm. so, js won't be able to call into python in Jupyter...
# see https://docs.bokeh.org/en/latest/docs/gallery/slider.html
update_js = CustomJS(
args=dict(ds=ds, xrange=p.x_range),
code=J('''
const [ll, rr] = ds.value;
// didn't work??
// xrange.set({"start": ll, "end": rr})
xrange.start = ll;
xrange.end = rr;
// todo hmm, turned out it wasn't necessary??
// source.trigger('change');
'''
))
# todo add some quick selectors, e.g. last month, last year, etc like plotly
ds.js_on_change('value', update_js)
return ds
def plot_multiple(df, *, columns, **kwargs):
0
View Source File : layout.py
License : MIT License
Project Creator : wywongbd
License : MIT License
Project Creator : wywongbd
def build_widgets_wb(stock_list):
# CODE SECTION: setup widgets, widgetbox name = controls_wb
WIDGET_WIDTH = 250
# ========== Select Stocks ============= #
select_stk_1 = Select(width = WIDGET_WIDTH, title='Select Stock 1:', value = stock_list[0], options=stock_list)
select_stk_2 = Select(width = WIDGET_WIDTH, title='Select Stock 2:', value = stock_list[0], options=stock_list)
# ========== Strategy Type ============= #
strategy_list = ['kalman', 'distance', 'cointegration']
select_strategy = Select(width = WIDGET_WIDTH, title='Select Strategy:', value = strategy_list[0], options=strategy_list)
# ========== set start/end date ============= #
# date time variables
MAX_START = date(2014, 1, 1)
MAX_END = date(2018, 12, 30)
DEFAULT_START = date(2016, 5, 1)
DEFAULT_END = date(2016, 12, 31)
STEP = 1
backtest_dates = DateRangeSlider(width = WIDGET_WIDTH,
start=MAX_START, end=MAX_END,
value=(DEFAULT_START, DEFAULT_END),
step=STEP, title="Backtest Date Range:")
start_bt = Button(label="Backtest", button_type="success", width = WIDGET_WIDTH)
# controls = column(select_stk_1, select_stk_2, select_strategy, backtest_dates, start_bt)
controls_wb = widgetbox(select_stk_1, select_stk_2, select_strategy, backtest_dates, start_bt, width=600)
return controls_wb
def main():
0
View Source File : client_demo.py
License : MIT License
Project Creator : wywongbd
License : MIT License
Project Creator : wywongbd
def build_widgets_wb(stock_list, metrics):
# CODE SECTION: setup buttons, widgetbox name = controls_wb
WIDGET_WIDTH = 250
# ========== Select Stocks ============= #
select_stk_1 = Select(width = WIDGET_WIDTH, title='Select Stock 1:', value = backtest_params["stk_0"], options=stock_list)
select_stk_2 = Select(width = WIDGET_WIDTH, title='Select Stock 2:', value = backtest_params["stk_1"], options=stock_list)
# ========== Strategy Type ============= #
strategy_list = ['kalman', 'distance', 'cointegration', 'reinforcement learning']
select_strategy = Select(width = WIDGET_WIDTH, title='Select Strategy:', value = backtest_params["strategy_type"], options=strategy_list)
# ========== set start/end date ============= #
# date time variables
MAX_START = datetime.strptime(backtest_params["max_start"], "%Y-%m-%d").date()
MAX_END = datetime.strptime(backtest_params["max_end"], "%Y-%m-%d").date()
DEFAULT_START = datetime.strptime(backtest_params["backtest_start"], "%Y-%m-%d").date()
DEFAULT_END = datetime.strptime(backtest_params["backtest_end"], "%Y-%m-%d").date()
STEP = 1
backtest_dates = DateRangeSlider(width = WIDGET_WIDTH,
start=MAX_START, end=MAX_END,
value=(DEFAULT_START, DEFAULT_END),
step=STEP, title="Backtest Date Range:")
start_bt = Button(label="Backtest", button_type="success", width = WIDGET_WIDTH)
# controls = column(select_stk_1, select_stk_2, select_strategy, backtest_dates, start_bt)
controls_wb = widgetbox(select_stk_1, select_stk_2, select_strategy, backtest_dates, start_bt, width=300)
# CODE SECTION: setup table, widgetbox name = metrics_wb
master_wb = None
if metrics is not None:
metric_source = ColumnDataSource(metrics)
metric_columns = [
TableColumn(field="Metrics", title="Metrics"),
TableColumn(field="Value", title="Performance"),
]
metric_table = DataTable(source=metric_source, columns=metric_columns, width=300)
master_wb = row(controls_wb, widgetbox(metric_table))
else:
logging.info("creating controls without table")
master_wb = row(controls_wb)
return master_wb, select_stk_1, select_stk_2, select_strategy, backtest_dates, start_bt
if FIRST_ITER[0]: