frombokeh.layoutsimportcolumn,rowfrombokeh.modelsimportCustomJS,Div,HoverTool,Switch,TapToolfrombokeh.plottingimportfigure,showplot=figure(width=400,height=400,tools=["pan","box_select","save","reset"])cr1=plot.scatter([1,2,3],[5,5,5],size=30,color="red")cr2=plot.scatter([1,2,3],[4,4,4],size=30,color="green")cr3=plot.scatter([1,2,3],[3,3,3],size=30,color="blue")cr4=plot.scatter([1,2,3],[2,2,2],size=30,color="purple")cr5=plot.scatter([1,2,3],[1,1,1],size=30,color="yellow")plot.add_tools(HoverTool(renderers=[cr1],description="Hover over red",group="rgb"),HoverTool(renderers=[cr2],description="Hover over green",group="rgb"),HoverTool(renderers=[cr3],description="Hover over blue",group="rgb"),HoverTool(renderers=[cr4],description="Hover over yellow"),HoverTool(renderers=[cr5],description="Hover over purple"),)plot.add_tools(TapTool(renderers=[cr1],description="Tap over red",group="rgb"),TapTool(renderers=[cr2],description="Tap over green",group="rgb"),TapTool(renderers=[cr3],description="Tap over blue",group="rgb"),TapTool(renderers=[cr4],description="Tap over yellow"),TapTool(renderers=[cr5],description="Tap over purple"),)text=Div(text="Group tools:")switch=Switch(active=plot.toolbar.group)switch.js_on_change("active",CustomJS(args=dict(plot=plot),code="""export default ({plot}, {active: group}) => { plot.toolbar.group = group}"""))layout=column([row([text,switch]),plot])show(layout)