def make_toolbar(canvas): # Create the toolbar toolbar = PlotCanvasToolbar( bounds=[70, 200], position=[50, 350], fill_padding=True, bgcolor="lightgrey", padding=5, align="left", ) # Create the scatterplot pd = ArrayPlotData() scatterplot = Plot(pd, padding=15, bgcolor="white", unified_draw=True, border_visible=True) if not MULTITOUCH: scatterplot.tools.append(PanTool(scatterplot, drag_button="right")) scatterplot.tools.append(ZoomTool(scatterplot)) else: scatterplot.tools.append(MPPanZoom(scatterplot)) scatterplot.overlays.append( PlotCloneTool(scatterplot, dest=canvas, plot_cloner=clone_plot)) # Create the overlay overlay = TransientPlotOverlay( component=toolbar, overlay_component=scatterplot, bounds=[350, 350], border_visible=True, visible=False, # initially invisible ) scatterplot.container = overlay # Create buttons controller = ButtonController() for name in list(DATA.keys()): plot = do_plot(name, pd) if MULTITOUCH: plot.tools.append(MPPanZoom(plot)) else: plot.tools.append( PanTool(plot, drag_button="right", constrain=True, constrain_direction="x")) plot.tools.append( ZoomTool(plot, tool_mode="range", axis="index", always_on=False)) plot.overlays.append( PlotCloneTool(plot, dest=canvas, plot_cloner=clone_plot)) plot_overlay = TransientPlotOverlay( component=toolbar, overlay_component=plot, border_visible=True, visible=False, ) plot.container = plot_overlay button = DataSourceButton( label=name, bounds=[80, 46], padding=5, button_controller=controller, #canvas = canvas, plot_overlay=plot_overlay, plotname=name) toolbar.add(button) canvas.overlays.append(plot_overlay) controller.plot = scatterplot controller.plot_overlay = overlay canvas.overlays.append(overlay) return toolbar
def make_toolbar(canvas): # Create the toolbar toolbar = PlotCanvasToolbar(bounds=[70, 200], position=[50,350], fill_padding=True, bgcolor="lightgrey", padding = 5, align = "left", ) # Create the scatterplot pd = ArrayPlotData() scatterplot = Plot(pd, padding=15, bgcolor="white", unified_draw=True, border_visible=True) if not MULTITOUCH: scatterplot.tools.append(PanTool(scatterplot, drag_button="right")) scatterplot.tools.append(ZoomTool(scatterplot)) else: scatterplot.tools.append(MPPanZoom(scatterplot)) scatterplot.overlays.append(PlotCloneTool(scatterplot, dest=canvas, plot_cloner=clone_plot)) # Create the overlay overlay = TransientPlotOverlay(component=toolbar, overlay_component=scatterplot, bounds=[350,350], border_visible=True, visible = False, # initially invisible ) scatterplot.container = overlay # Create buttons controller = ButtonController() for name in DATA.keys(): plot = do_plot(name, pd) if MULTITOUCH: plot.tools.append(MPPanZoom(plot)) else: plot.tools.append(PanTool(plot, drag_button="right", constrain=True, constrain_direction="x")) plot.tools.append(ZoomTool(plot, tool_mode="range", axis="index", always_on=False)) plot.overlays.append(PlotCloneTool(plot, dest=canvas, plot_cloner=clone_plot)) plot_overlay = TransientPlotOverlay(component=toolbar, overlay_component=plot, border_visible=True, visible=False, ) plot.container = plot_overlay button = DataSourceButton(label=name, bounds=[80,46], padding = 5, button_controller = controller, #canvas = canvas, plot_overlay = plot_overlay, plotname = name) toolbar.add(button) canvas.overlays.append(plot_overlay) controller.plot = scatterplot controller.plot_overlay = overlay canvas.overlays.append(overlay) return toolbar