散景:在 MouseClick 上将变量传递给 url - OpenURL 与 CustomJS

Bokeh: Passing a variable to a url on MouseClick - OpenURL vs. CustomJS

提问人:Patrick 提问时间:5/13/2016 更新时间:5/13/2016 访问量:808

问:

我有一个散景图,里面有一些点,我正在尝试捕获属于 MouseClick 上任何点的变量。代码示例位于此文本下方。

使用 OpenURL 方法,一切按预期工作。变量 @ref 的值将放入 URL 中,URL 将在新窗口中打开。

但是,使用 CustomJS 这是行不通的。taptool 回调中的 javascript 有效(带有 URL 的链接被添加到当前页面),但现在变量 @ref 作为字符串传递;其值未放入 URL 中。

有谁知道如何让 CustomJS 版本将 @ref 变量正确传递给 url?

代码示例:

使用 OpenURL:

from bokeh.plotting import figure, ColumnDataSource
from bokeh.models import HoverTool, TapTool, OpenURL


        source = ColumnDataSource(
            data=dict(
                x=[x for x in range(0, 200)],
                y=[y for y in range(0, 200)],
                ref=[x + y for x in range(0, 200) for y in range(0, 200)]
            )
        )

        hover = HoverTool(
            tooltips=[
                ("ref", "@ref"),
                ("(x,y)", "($x, $y)"),
            ]
        )

        tools = [hover, 'box_zoom,box_select,crosshair,resize,save,reset, tap']

        url = "http://domain.com/dosomething?reference=@ref"

        fig = figure(x_range=(0, 200), y_range=(0, 200), tools=tools)
        fig.circle('x', 'y', source=source)

        taptool = fig.select(type=TapTool)
        taptool.callback = OpenURL(url=url)

-> URL 如下所示:“http://domain.com/dosomething?reference=79"

使用 CustomJS:

from bokeh.plotting import figure, ColumnDataSource
from bokeh.models import HoverTool, TapTool, CustomJS


        source = ColumnDataSource(
            data=dict(
                x=[x for x in range(0, 200)],
                y=[y for y in range(0, 200)],
                ref=[x + y for x in range(0, 200) for y in range(0, 200)]
            )
        )

        hover = HoverTool(
            tooltips=[
                ("ref", "@ref"),
                ("(x,y)", "($x, $y)"),
            ]
        )

        tools = [hover, 'box_zoom,box_select,crosshair,resize,save,reset, tap']

        url = "http://domain.com/dosomething?reference=@ref"

        fig = figure(x_range=(0, 200), y_range=(0, 200), tools=tools)
        fig.circle('x', 'y', source=source)

        taptool = fig.select(type=TapTool)
        taptool.callback = CustomJS(args=dict(source=source), code="""
            var mydiv = document.getElementById("link");
            mydiv.innerHTML = "<a href='""" + url + """'>link</a>";
        """)

-> URL 如下所示:“http://domain.com/dosomething?reference=@ref"

变量 :散景 mouseclick-event

评论


答: 暂无答案