def modify_doc(doc): parambokeh.Widgets(smap, continuous_update=True, callback=smap.event, on_init=True, mode='server') panel = pp.Row(smap, smap.view) return panel.server_doc(doc=doc)
def app(doc): x,y = SineWave() source = ColumnDataSource(data=dict(x=x, y=y)) import numpy as np # see TODO below about ranges plot = figure(plot_height=400, plot_width=400, tools="crosshair,pan,reset,save,wheel_zoom", x_range=[0, 4*np.pi], y_range=[-2.5, 2.5]) plot.line('x', 'y', source=source, line_width=3, line_alpha=0.6) def update_sinewave(sw,**kw): x,y = sw() source.data = dict(x=x, y=y) # TODO couldn't figure out how to update ranges #plot.x_range.start,plot.x_range.end=pobj.x_range #plot.y_range.start,plot.y_range.end=pobj.y_range parambokeh.Widgets(SineWave, mode='server', doc=doc, callback=update_sinewave) doc.add_root(row(plot, width=800))
def modify_doc(doc): explorer = QAExplorer(rootdir='.') explorer.output = explorer.view() doc = parambokeh.Widgets(explorer, continuous_update=False, callback=explorer.event, view_position='right', mode='server') name_input = TextInput(value='selected', title="Save IDs as") save_button = Button(label='Save IDs', width=100) clear_button = Button(label='Clear saved IDs', width=100) saved_ids = PreText(text=','.join(explorer.saved_ids)) def save_selected(): explorer.save_selected(name_input.value) saved_ids.text = ','.join(explorer.saved_ids) def clear_ids(): for f in [ os.path.join(explorer.id_path, '{}.h5'.format(i)) for i in explorer.saved_ids ]: os.remove(f) saved_ids.txt = '' save_button.on_click(save_selected) clear_button.on_click(clear_ids) doc.add_root(name_input) doc.add_root(save_button) doc.add_root(saved_ids) doc.add_root(clear_button) return doc
def animate_update(): year = slider.value + 1 if year > end: year = start slider.value = year def animate(): if button.label == '\u25B6 Play': button.label = '\u23F8 Pause' curdoc().add_periodic_callback(animate_update, 500) else: button.label = '\u25B6 Play' curdoc().remove_periodic_callback(animate_update) button = Button(label='\u25B6 Play', width=60) button.on_click(animate) widget = parambokeh.Widgets(cmap_picker, mode='raw') # Combine the bokeh plot on plot.state with the widgets layout = layout([ [widget], [plot.state], [slider, button], ], sizing_mode='fixed') curdoc().add_root(layout)
bounds=(0, 10), doc='Filter for Taxi Trips by Number of Passengers') output = parambokeh.view.Plot() def make_view(self, x_range=None, y_range=None, **kwargs): options = dict(width=800, height=475, xaxis=None, yaxis=None) map_tiles = gv.WMTS(tiles['ESRI']).opts(style=dict(alpha=self.alpha), plot=options) points = hv.Points(nyc_taxi, kdims=[self.plot + '_x', self.plot + '_y'], vdims=['passenger_count']) selected = points.select(passenger_count=self.passengers) taxi_trips = datashade(selected, x_sampling=1, y_sampling=1, width=800, height=475, cmap=inferno, dynamic=False) return map_tiles * taxi_trips explorer = NYCTaxiExplorer(name="Taxis en NY") explorer.output = hv.DynamicMap(explorer.make_view, streams=[explorer]) doc = parambokeh.Widgets(explorer, view_position='right', callback=explorer.event, mode='server')
yaxis=None, bgcolor='black', show_grid=False) opts2 = dict(width=1000, height=600, x_sampling=1, y_sampling=1, dynamic=False) class OSMExplorer(hv.streams.Stream): alpha = param.Magnitude(default=0.75, doc="Map opacity") colormap = param.ObjectSelector(default=cm_n["fire"], objects=cm_n.values()) def make_view(self, x_range, y_range, **kwargs): tiles = map_tiles.options(alpha=self.alpha, **opts1) points = hv.Points(df, ['x', 'y']) return tiles * datashade(points, cmap=self.colormap, x_range=x_range, y_range=y_range, **opts2) explorer = OSMExplorer(name="Open Street Map GPS") dmap = hv.DynamicMap(explorer.make_view, streams=[explorer, RangeXY()]) plot = hv.renderer('bokeh').instance(mode='server').get_plot(dmap) parambokeh.Widgets(explorer, view_position='right', callback=explorer.event, plots=[plot.state], mode='server')
element = param.ObjectSelector(default=hv.Curve, objects=[hv.Curve, hv.Scatter, hv.Area], precedence=0) amplitude = param.Number(default=2, bounds=(2, 5)) frequency = param.Number(default=2, bounds=(1, 10)) output = parambokeh.view.Plot() def view(self, *args, **kwargs): return self.element( self.amplitude * np.sin(np.linspace(0, np.pi * self.frequency)), vdims=[hv.Dimension('y', range=(-5, 5))])(style=dict(color=self.color)) def event(self, **kwargs): if not self.output or any(k in kwargs for k in ['color', 'element']): self.output = hv.DynamicMap(self.view, streams=[self]) else: super(CurveExample, self).event(**kwargs) example = CurveExample(name='HoloViews Example') doc = parambokeh.Widgets(example, callback=example.event, on_init=True, mode='server', view_position='right', doc=curdoc())
districts = hv.Polygons([gv.util.geom_to_array(dist.data) for dist in districts]) # districts.opts(plot=dict(fill_color=None, line_width=1.5)) return districts class DistrictExplorer(hv.streams.Stream): district_type = param.ObjectSelector(objects=('US House', 'State House', 'State Senate'), default='US House') def make_view(self, **kwargs): districts = hv.DynamicMap(load_district_shapefile, streams=[self]) options = dict(width=1000, height=600, xaxis=None, yaxis=None, show_grid=False) tiles.opts(plot=options) return tiles * shaded * color_points * districts # def event(self, **kwargs): # if not self.output or any(k in kwargs for k in ['District type']): # self.output = hv.DynamicMap(self.view, streams=[self]) # else: # super(DistrictExplorer, self).event(**kwargs) explorer = DistrictExplorer(name="District explorer") dmap = explorer.make_view() plot = hv.renderer('bokeh').instance(mode='server').get_plot(dmap) parambokeh.Widgets(explorer, continuous_update=True, callback=explorer.event, on_init=True, plots=[plot.state], mode='server')
self.station_two, self.variable) def event(self, **kwargs): # clear canvas and replace if not self.output or any(k in kwargs for k in ['station_one', 'station_two']): self.output = hv.DynamicMap(self.view, streams=[self]) else: # update canvas with new variable super(Seasontology, self).event(**kwargs) # initialize cached_wx_dfs = {} this_year = pd.datetime.now().year for pkl in glob.iglob(os.path.join(DATA, '*.pkl')): # clean up cached files if stale if str(this_year) not in pkl: os.remove(pkl) # pre-generate delimiters so it doesn't have to be generated everytime season_vlines = _season_vlines() selector = Seasontology(name='Seasontology') parambokeh.Widgets(selector, width=250, on_init=True, mode='server', view_position='right', callback=selector.event)
"""Example Parameterized class""" log = [] x = param.Number(default=1.0, bounds=(0, 100), precedence=0, doc="X position") write_to_log = param.Action(lambda obj: obj.log.append( (dt.datetime.now(), obj.x)), doc="""Record value of x and timestamp.""", precedence=1) ##### create a properties frame for Example import parambokeh w = parambokeh.Widgets(Example, mode='server') ##### display value of Example.log in bokeh app from bokeh.io import curdoc from bokeh.layouts import layout from bokeh.models import Div log = Div() def update_log(): log.text = "<br />".join([ "%s -- %s" % (t[0].strftime('%H:%M:%S.%f'), t[1]) for t in Example.log ]) import datetime
location = param.ObjectSelector(default='dropoff', objects=['dropoff', 'pickup']) def make_view(self, x_range, y_range, **kwargs): map_tiles = tiles(style=dict(alpha=self.alpha), plot=tile_options) points = hv.Points(df, kdims=[self.location + '_x', self.location + '_y'], vdims=['dropoff_hour']) if self.hour != (0, 24): points = points.select(dropoff_hour=self.hour) taxi_trips = datashade(points, x_sampling=1, y_sampling=1, cmap=self.colormap, dynamic=False, x_range=x_range, y_range=y_range, width=1000, height=600) return map_tiles * taxi_trips selector = NYCTaxiExplorer(name="NYC Taxi Trips") dmap = hv.DynamicMap(selector.make_view, streams=[selector, RangeXY()]) plot = hv.renderer('bokeh').instance(mode='server').get_plot(dmap) parambokeh.Widgets(selector, view_position='right', callback=selector.event, mode='server', plots=[plot.state])
output = parambokeh.view.Plot() def make_view(self, x_range, y_range, alpha, colormap, plot, passengers, **kwargs): map_tiles = tiles(style=dict(alpha=alpha), plot=tile_options) points = hv.Points(df, kdims=[plot + '_x', plot + '_y'], vdims=['passenger_count']) if passengers != passenger_counts: points = points.select(passenger_count=passengers) taxi_trips = datashade(points, x_sampling=1, y_sampling=1, cmap=colormap, dynamic=False, x_range=x_range, y_range=y_range) return map_tiles * taxi_trips selector = NYCTaxiExplorer(name="NYC Taxi Trips") selector.output = hv.DynamicMap(selector.make_view, streams=[selector, RangeXY(), PlotSize()]) doc = parambokeh.Widgets(selector, view_position='right', callback=selector.event, mode='server')