Bokeh DataTable – 如何设置选定的行
在本文中,我们将介绍如何在 Bokeh 中设置选定的行,以及如何使用 DataTable 来显示和操作数据。
阅读更多:Bokeh 教程
什么是 Bokeh?
Bokeh 是一个 Python 库,用于创建交互式的数据可视化。它提供了一个强大的工具集,允许用户创建丰富多样的图表、图形和可视化效果。Bokeh 不仅可以用于静态数据图表的绘制,还可以创建动态图表和可交互的数据应用。
Bokeh DataTable
Bokeh 的 DataTable 是一个交互式的数据表,可以方便地显示和操作数据集。DataTable 支持列排序、筛选和选择等功能,使用户能够轻松地浏览和分析大型数据集。
要使用 DataTable,我们首先需要导入相应的库和模块:
from bokeh.io import show
from bokeh.models import ColumnDataSource, DataTable, NumberEditor, StringEditor, NumberFormatter, StringFormatter, IntEditor
from bokeh.layouts import layout
接下来,我们创建一个示例数据集,并将其转换为 Bokeh 中的 ColumnDataSource 对象:
data = {'Name': ['John', 'Emma', 'Michael', 'Sophia', 'Daniel'],
'Age': [25, 28, 32, 24, 30],
'Gender': ['Male', 'Female', 'Male', 'Female', 'Male'],
'Salary': [50000, 60000, 70000, 55000, 65000]}
source = ColumnDataSource(data)
然后,我们可以定义表格的每一列,并设置相应的编辑器和格式:
columns = [
TableColumn(field='Name', title='姓名', editor=StringEditor(), formatter=StringFormatter()),
TableColumn(field='Age', title='年龄', editor=IntEditor(), formatter=NumberFormatter(format='0')),
TableColumn(field='Gender', title='性别', editor=StringEditor(), formatter=StringFormatter()),
TableColumn(field='Salary', title='工资', editor=NumberEditor(step=1000), formatter=NumberFormatter(format='$0,0.00'))
]
现在,我们可以创建 DataTable 并将其添加到布局中:
table = DataTable(source=source, columns=columns, editable=True, index_position=-1, width=600, height=400)
layout = layout([[table]])
最后,使用 show()
函数将布局展示出来:
show(layout)
这样,一个基本的 DataTable 就创建完成了。您可以通过在表格中点击单元格来编辑数据,或者通过点击表头对数据进行排序。
如何设置选定的行
在 Bokeh 的 DataTable 中,我们可以很方便地通过设置 selected
属性来选择行。selected
属性是一个列表,其中包含了当前选定行的索引。我们可以通过设置 selected
属性来初始化选定的行,或者通过监听 selected
属性的变化来获取用户选择的行。
以下是设置选定的行的示例代码:
from bokeh.events import SelectionGeometry, Tap
selected_rows = []
def selection_callback(event):
selected_rows.extend(event.indices)
def tap_callback(event):
selected_rows.clear()
selected_rows.extend([index.row for index in event.indices])
table.selected.js_on_change('indices', CustomJS(code="""
document.dispatchEvent(new CustomEvent('selectionGeometry', {detail: {indices: cb_obj.indices}}))
"""))
table.selected.on_change('indices', selection_callback)
table.selected.on_event(SelectionGeometry, tap_callback)
在上述代码中,我们定义了两个回调函数 selection_callback
和 tap_callback
。selection_callback
函数在选定行发生变化时被调用,用于更新 selected_rows
列表。tap_callback
函数则在用户点击行时被调用,用于清空 selected_rows
并更新为新的选定行。
最后,我们使用 CustomJS 将 Bokeh 的选定行事件转发到 JavaScript 代码,以便在 Bokeh 的 JavaScript 环境中使用。通过监听 selectionGeometry
事件,我们可以获取使用 JavaScript 选择的行。
总结
本文介绍了如何在 Bokeh 中设置选定的行,并使用 DataTable 来显示和操作数据。使用 Bokeh 提供的丰富功能和API,我们可以轻松地创建交互式的数据可视化和应用。 Bokeh 是一个强大而灵活的工具,为数据科学家、工程师和分析师提供了许多有用的功能和功能。
希望本文能够帮助您更好地理解和使用 Bokeh 中的 DataTable,并为您的数据分析和可视化工作带来便利和效果提升。祝您在使用 Bokeh 中的 DataTable 和其他 Bokeh 功能时取得成功!