아마 쉬운 방법이있다 그러나 이것은 나를 위해 작동 :
from bokeh.models import ColumnDataSource, TapTool,CustomJS
from bokeh.plotting import figure
from bokeh.embed import file_html
from bokeh.resources import INLINE
p = figure(plot_width=400, plot_height=400,
tools="tap", title="The rectangles are links")
source1 = ColumnDataSource(data=dict(x1=[1],x2=[2],y1=[2],y2=[1],color=["navy"],url=["http://www.google.com"]))
source2 = ColumnDataSource(data=dict(x1=[2],x2=[3],y1=[5],y2=[4],color=["orange"],url=["https://stackoverflow.com"]))
source3 = ColumnDataSource(data=dict(x1=[3],x2=[4],y1=[8],y2=[7],color=["olive"],url=["https://bokeh.pydata.org"]))
#glyphs with links
p.quad('x1','x2','y1','y2',color='color',source=source1)
p.quad('x1','x2','y1','y2',color='color',source=source2)
p.quad('x1','x2','y1','y2',color='color',source=source3)
#glyph without a link
p.circle(5, 5, size=20)
jscode="""
s=cb_data.source;
atr=s.attributes;
var d=atr.data;//d is the data dictionary
url=d.url;
url1=url[0]
if (url1.substring(0, 4) == 'http') {
window.open(url);
}
"""
taptool = p.select(type=TapTool)
taptool.callback = CustomJS(args=dict(source=source1), code=jscode)
#save file as .html
with open("bokehRectangleLink.html","w") as f:
f.write(file_html(p, INLINE, "bokehRectangleLink"))
#open the .html in the browser
import webbrowser
webbrowser.open("bokehRectangleLink.html")
을