2017-12-25 14 views
1

私はそれに複数のプロットを持つ図を持っています。私はそれに長方形をリンクしたいと思います。何か類似のドキュメントがすべてのプロットリンクを作成しますが、私はちょうど四角形がリンクであることを望みます。Python Bokehはプロットの一部をリンクにします

私は

例をみてください...、の多くはjs_on_eventと思うcostum_js_on_tapなどを試してみました:

... 
plot.line([1, seq_len], [-0.2, -0.2], color="black") 
callback = OpenURL(url="google.com") 
a = plot.rect(1, 1, 100, 1) 
a.js_on_event('tap', callback) 
... 

答えて

2

が容易な方法は、おそらくですが、これは私の作品:

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") 
関連する問題