【问题标题】:How to use cb_obj in callbacks in bokeh?如何在散景的回调中使用 cb_obj?
【发布时间】:2020-08-23 21:24:52
【问题描述】:

bokeh.models.actions.Action 中,有一个callback 类用于用户定义的回调。它将当前的plot_object 隐式传递为cb_obj

但是,我不知道如何从plot_object 访问数据。

    fig = figure()
    fig.circle(x=[1,2,3], y=[4,5,6])
    tap_tool.action = Callback(
        code="""
            alert('clicked')
            console.log(cb_obj)

        """)

我如何访问这些信息,例如x, y 点击的圆圈?在模板字符串中,我们可以使用@variable$x 来获取每个数据点的信息。

此外,在我看来只有 1 个Circle Glyph,尽管有 3 个圈子。所以字形与数据点的数量无关,对吗?

cb_obj 是指这个Glyph,还是指包含这个字形的glyphRenderer

在文档中显示了一个示例:

    var inds = cb_obj.get('selected')['1d'].indices;
    var d1 = cb_obj.get('data');

select, id, indices, data 来自哪里? cb_obj的结构是什么。

【问题讨论】:

    标签: javascript bokehjs


    【解决方案1】:

    从 Bokeh 0.9.0 开始,对于 TapTool 操作,cb_obj 的值是报告命中的字形的数据源。这个例子展示了如何访问数据列:

    https://docs.bokeh.org/en/latest/docs/user_guide/interaction/callbacks.html#customjs-for-tools

    【讨论】:

      【解决方案2】:

      您实际上可以通过以下方式检查对象:

      console.log(cb_data);
      console.log(cb_obj);
      

      例如使用这个回调来检查两个对象的内容:

      scode = """
              console.log(cb_obj);
              console.log(cb_data);
              """
      taptool.callback = CustomJS(args=dict(source=source),code = scode)
      

      如果您在 chrome 中运行,您将在日志中看到 cb_obj 和 cb_data 的内容(View-Developer-Javascripts Console)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-06-21
        • 1970-01-01
        • 2018-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多