Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from bokeh.io import show
- from bokeh.layouts import column, row
- from bokeh.models import DataTable, TableColumn, Button, CustomJS, ColumnDataSource
- from bokeh.plotting import figure
- from bokeh.io import output_notebook
- output_notebook()
- # new x_ranges (1d and 2d) with their values
- range1d = ["c", "d"]
- values1d = [100, 150];
- range2d_p1 = ["e", "e", "f", "f", "g", "g"];
- range2d_p2 = ["0", "1", "0", "1", "0", "1"];
- values2d = [50, 30, 40, 80, 120, 110];
- # default fig
- fig = figure(x_range=["a", "b"],
- plot_height=350,
- plot_width=490,
- tools="box_edit",
- toolbar_location="right")
- source_plot = ColumnDataSource(data={"Column": ["a", "b"], "Result": [0,0]})
- bar = fig.vbar(x='Column', top='Result', width=0.9, source=source_plot,
- fill_color='#97F0AA', line_color="black", name="main_vbar")
- # buttons
- xrange_1d = Button(label="xrange_1d", width=100)
- xrange_2d = Button(label="xrange_2d", width=100)
- # callbacks
- xrange_1d.js_on_click(CustomJS(args=dict(fig=fig, source_plot=source_plot,
- range1d=range1d, values1d=values1d),
- code="""
- console.log(fig.x_range.factors);
- //fig.x_range.factors = range1d;
- const FactorRange = Bokeh.Models('FactorRange');
- fig.x_range.factors = new FactorRange({ factors: range1d });
- source_plot.data["Column"] = range1d;
- source_plot.data["Result"] = values1d;
- source_plot.change.emit();
- """))
- xrange_2d.js_on_click(CustomJS(args=dict(fig=fig, source_plot=source_plot,
- range2d_p1=range2d_p1, range2d_p2=range2d_p2,
- values2d=values2d),
- code="""
- console.log(fig.x_range.factors);
- var factorsZipped = range2d_p1.map(function(e, i) {
- return [e, range2d_p2[i]];
- });
- console.log(factorsZipped);
- //fig.x_range.factors = factorsZipped;
- const FactorRange = Bokeh.Models('FactorRange');
- fig.x_range.factors = new FactorRange({ factors: factorsZipped });
- source_plot.data["Column"] = factorsZipped;
- source_plot.data["Result"] = values2d;
- source_plot.change.emit();
- """))
- show(column(row(xrange_1d, xrange_2d), fig))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement