def create_selection_plot(main_plot, theme): static_source = ColumnDataSource(data) selection_plot = figure(height=100, tools="box_select", x_axis_location="above", x_axis_type="datetime", toolbar_location=None, outline_line_color=None, name="small_plot") selection_source = ColumnDataSource() for k in ['end', 'values', 'start', 'bottom']: selection_source.add([], k) if theme == 'default': selection_color = '#c6dbef' elif theme == 'dark': selection_color = "#FFAD5C" selection_plot.quad(top='values', bottom='bottom', left='start', right='end', source=selection_source, color=selection_color, fill_alpha=0.5) selection_plot.line('Date', 'Price', color='#A6CEE3', source=static_source) selection_plot.circle('Date', 'Price', color='#A6CEE3', source=static_source, size=1) style_selection_plot(selection_plot, theme) select_tool = selection_plot.select(dict(type=BoxSelectTool)) select_tool.dimensions = ['width'] code = """ if (window.xrange_base_start == undefined){ window.xrange_base_start = main_plot.get('x_range').get('start'); } if (window.xrange_base_end == undefined){ window.xrange_base_end = main_plot.get('x_range').get('end'); } data = source.get('data'); sel = source.get('selected')['1d']['indices']; var mi = 1000000000; var ma = -100000; if (sel.length == 0){ var url = "http://127.0.0.1:5000/alldata"; source_data = selection_source.get('data'); source_data.bottom = [] source_data.values = []; source_data.start = []; source_data.end = []; // reset main plot ranges main_range.set('start', window.xrange_base_start); main_range.set('end', window.xrange_base_end); }else{ for (i=0; i<sel.length; i++){ if (mi>sel[i]){ mi = sel[i]; } if (ma<sel[i]){ ma = sel[i]; } } var url = "http://127.0.0.1:5000/subsample/"+data.Date[mi]+"/"+data.Date[ma]; source_data = selection_source.get('data'); source_data.bottom = [0] source_data.values = [700]; source_data.start = [data.Date[mi]]; source_data.end = [data.Date[ma]]; main_range = main_plot.get('x_range'); main_range.set('start', data.Date[mi]); main_range.set('end', data.Date[ma]); } xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", url, true); xmlhttp.send(); selection_source.trigger('change'); if (sel.length==0){ $("#details_panel").addClass("hidden"); $("#details_panel").html(""); }else{ var url = "http://127.0.0.1:5000/details"; xhr = $.ajax({ type: 'GET', url: url, contentType: "application/json", // data: jsondata, header: { client: "javascript" } }); xhr.done(function(details) { $("#details_panel").removeClass("hidden"); $("#details_panel").html("<h3>Selected Region Report</h3>"); $("#details_panel").append("<div>From " + details.start + " to " + details.end + "</div>"); $("#details_panel").append("<div>Number of original samples " + details.original_samples_no + "</div>"); $("#details_panel").append("<div>Number of samples " + details.samples_no + "</div>"); $("#details_panel").append("<div>Factor " + details.factor + "</div>"); }); } """ callback = Callback(args={ 'source': static_source, 'selection_source': selection_source, 'main_plot': main_plot }, code=code) static_source.callback = callback return selection_plot
var url = "http://127.0.0.1:5000/subsample/"+data.Date[mi]+"/"+data.Date[ma]; source_data = selection_source.get('data'); source_data.bottom = [0] source_data.values = [700]; source_data.start = [data.Date[mi]]; source_data.end = [data.Date[ma]]; main_range = main_plot.get('x_range'); main_range.set('start', data.Date[mi]); main_range.set('end', data.Date[ma]); } xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", url, true); xmlhttp.send(); selection_source.trigger('change'); """ callback = CustomJS(args={ 'source': static_source, 'selection_source': selection_source, 'main_plot': p }, code=code) static_source.callback = callback layout = vplot(selection_plot, p) show(layout)
var url = "http://127.0.0.1:5000/subsample/"+data.Date[mi]+"/"+data.Date[ma]; source_data = selection_source.get('data'); source_data.bottom = [0] source_data.values = [700]; source_data.start = [data.Date[mi]]; source_data.end = [data.Date[ma]]; main_range = main_plot.get('x_range'); main_range.set('start', data.Date[mi]); main_range.set('end', data.Date[ma]); } xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", url, true); xmlhttp.send(); selection_source.trigger('change'); """ callback = Callback( args={'source': static_source, 'selection_source': selection_source, 'main_plot': p}, code=code ) static_source.callback = callback layout = vplot(selection_plot, p) show(layout)
def create_selection_plot(main_plot, theme): static_source = ColumnDataSource(data) selection_plot = figure( height=100, tools="box_select", x_axis_location="above", x_axis_type="datetime", toolbar_location=None, outline_line_color=None, name="small_plot" ) selection_source = ColumnDataSource() for k in ['end', 'values', 'start', 'bottom']: selection_source.add([], k) if theme == 'default': selection_color = '#c6dbef' elif theme == 'dark': selection_color = "#FFAD5C" selection_plot.quad(top='values', bottom='bottom', left='start', right='end', source=selection_source, color=selection_color, fill_alpha=0.5) selection_plot.line('Date', 'Price', color='#A6CEE3', source=static_source) selection_plot.circle('Date', 'Price', color='#A6CEE3', source=static_source, size=1) style_selection_plot(selection_plot, theme) select_tool = selection_plot.select(dict(type=BoxSelectTool)) select_tool.dimensions = ['width'] code = """ if (window.xrange_base_start == undefined){ window.xrange_base_start = main_plot.get('x_range').get('start'); } if (window.xrange_base_end == undefined){ window.xrange_base_end = main_plot.get('x_range').get('end'); } data = source.get('data'); sel = source.get('selected')['1d']['indices']; var mi = 1000000000; var ma = -100000; if (sel.length == 0){ var url = "http://127.0.0.1:5000/alldata"; source_data = selection_source.get('data'); source_data.bottom = [] source_data.values = []; source_data.start = []; source_data.end = []; // reset main plot ranges main_range.set('start', window.xrange_base_start); main_range.set('end', window.xrange_base_end); }else{ for (i=0; i<sel.length; i++){ if (mi>sel[i]){ mi = sel[i]; } if (ma<sel[i]){ ma = sel[i]; } } var url = "http://127.0.0.1:5000/subsample/"+data.Date[mi]+"/"+data.Date[ma]; source_data = selection_source.get('data'); source_data.bottom = [0] source_data.values = [700]; source_data.start = [data.Date[mi]]; source_data.end = [data.Date[ma]]; main_range = main_plot.get('x_range'); main_range.set('start', data.Date[mi]); main_range.set('end', data.Date[ma]); } xmlhttp = new XMLHttpRequest(); xmlhttp.open("GET", url, true); xmlhttp.send(); selection_source.trigger('change'); if (sel.length==0){ $("#details_panel").addClass("hidden"); $("#details_panel").html(""); }else{ var url = "http://127.0.0.1:5000/details"; xhr = $.ajax({ type: 'GET', url: url, contentType: "application/json", // data: jsondata, header: { client: "javascript" } }); xhr.done(function(details) { $("#details_panel").removeClass("hidden"); $("#details_panel").html("<h3>Selected Region Report</h3>"); $("#details_panel").append("<div>From " + details.start + " to " + details.end + "</div>"); $("#details_panel").append("<div>Number of original samples " + details.original_samples_no + "</div>"); $("#details_panel").append("<div>Number of samples " + details.samples_no + "</div>"); $("#details_panel").append("<div>Factor " + details.factor + "</div>"); }); } """ callback = CustomJS( args={'source': static_source, 'selection_source': selection_source, 'main_plot': main_plot}, code=code) static_source.callback = callback return selection_plot