当前位置: 首页 > 面试题库 >

获取散景框选择工具中包含的选定数据

轩辕海
2023-03-14
问题内容

如果我在散景中有散点图,并且启用了“框选择工具”,则假设我使用“框选择工具”选择了一些点。如何访问所选点的(x,y)位置信息?

%matplotlib inline
import numpy as np
from random import choice
from string import ascii_lowercase

from bokeh.models.tools import *
from bokeh.plotting import *

output_notebook()


TOOLS="pan,wheel_zoom,reset,hover,poly_select,box_select"
p = figure(title = "My chart", tools=TOOLS)
p.xaxis.axis_label = 'X'
p.yaxis.axis_label = 'Y'

source = ColumnDataSource(
    data=dict(
        xvals=list(range(0, 10)),
        yvals=list(np.random.normal(0, 1, 10)),
        letters = [choice(ascii_lowercase) for _ in range(10)]
    )
)
p.scatter("xvals", "yvals",source=source,fill_alpha=0.2, size=5)

select_tool = p.select(dict(type=BoxSelectTool))[0]

show(p)

# How can I know which points are contained in the Box Select Tool?

我无法调用“ callback”属性,而“ dimensions”属性仅返回一个列表[“ width”,“
height”]。如果我可以获取“选定框”的尺寸和位置,则可以从此处确定数据集中的点。


问题答案:

您可以在callback上使用,以使用ColumnDataSource所选数据的索引更新Python变量:

%matplotlib inline
import numpy as np
from random import choice
from string import ascii_lowercase

from bokeh.models.tools import *
from bokeh.plotting import *
from bokeh.models import CustomJS



output_notebook()


TOOLS="pan,wheel_zoom,reset,hover,poly_select,box_select"
p = figure(title = "My chart", tools=TOOLS)
p.xaxis.axis_label = 'X'
p.yaxis.axis_label = 'Y'

source = ColumnDataSource(
    data=dict(
        xvals=list(range(0, 10)),
        yvals=list(np.random.normal(0, 1, 10)),
        letters = [choice(ascii_lowercase) for _ in range(10)]
    )
)
p.scatter("xvals", "yvals",source=source,fill_alpha=0.2, size=5)

select_tool = p.select(dict(type=BoxSelectTool))[0]

source.callback = CustomJS(args=dict(p=p), code="""
        var inds = cb_obj.get('selected')['1d'].indices;
        var d1 = cb_obj.get('data');
        console.log(d1)
        var kernel = IPython.notebook.kernel;
        IPython.notebook.kernel.execute("inds = " + inds);
        """
)

show(p)

然后,您可以使用类似的方法访问所需的数据属性

zip([source.data['xvals'][i] for i in inds],
    [source.data['yvals'][i] for i in inds])


 类似资料:
  • 问题内容: 所以我有这些复选框: 等等。它们大约有6个,并且都是手工编码的(即未从数据库中获取),因此它们可能会保持一段时间不变。 我的问题是如何将它们全部放入数组中(使用javascript),以便在使用Jquery 进行AJAX 请求时可以使用它们。 有什么想法吗? 编辑:我只希望将选中的复选框添加到数组 问题答案: 格式化: 希望它会起作用。

  • 问题内容: 我正在寻找一种选择SQL服务器上所有数据库的方法,这些数据库仅包含表“ dbo.mytable” 我怎样才能做到这一点 ? 我已经有了这两个sql查询: 和 第一个查询列出我的sql服务器上的所有数据库,第二个查询检查dbo.mytable是否存在。我想将它们合并。 谢谢 问题答案: 一种将它们全部归还到一个结果集中的简洁方法是

  • 问题内容: 我有一个html表单,该表单具有一个选择列表框,您可以从中选择多个值,因为其multiple属性设置为multiple。考虑表单方法为“ GET”。表单的html代码如下: 我想在display.php页面的选择列表框中显示选定的值。那么如何使用数组在display.php页面上访问选定的值。 问题答案: 如果要将PHP 视为选项数组,只需将方括号添加到 select元素 的名称中,如

  • Video tutorial: Select part of an imageVideo tutorial: Select part of an imageTrain Simple 选框工具允许您选择矩形、椭圆形和宽度为 1 个像素的行和列。 选择选框工具: 矩形选框 建立一个矩形选区(配合使用 Shift 键可建立方形选区)。 椭圆选框 建立一个椭圆形选区(配合使用 Shift 键可建立圆形选区

  • 我有一个超文本标记语言选择框,在我的jsp中启用了多选择。我从其他按钮动态填充选项。因此,用户不会从该选择框中选择任何值。我必须将selectbox的所有值传递给其他jsp。 我正在使用表单操作提交浏览jsp。这样做时,我无法获得所有的选择框值。 此选项仅提供该多选框中的选定值。我想要的是从selectbox中获取所有值,无论是否选中。 谢谢

  • 问题内容: 目前,我正在使用此: 它将我重定向到选项值内的位置。但这不能按预期工作。..这意味着如果我单击select的第一个选项,则onChange操作不会运行。我正在考虑使用javascript,但我想您会收到一些更好的建议。因此,如果我单击每个选项将其重定向到它的值,该如何使其起作用? 问题答案: 因为已经选择了第一个选项,所以永远不会触发change事件。添加一个空值作为第一个值,并检查位