使用onchange回调,我可以在Bokeh中获得DataTable中所选内容的数值行索引。 是否可以: a) 获取列索引 b) 获取索引的值(列和行标题)
示例代码:
from bokeh.io import curdoc
from bokeh.layouts import row, column
import pandas as pd
from bokeh.models import ColumnDataSource, ColorBar, DataTable, DateFormatter, TableColumn, HoverTool, Spacer, DatetimeTickFormatter
'''
Pandas
'''
df = pd.DataFrame(data = {'Apples': [5,10], 'Bananas': [16,15], 'Oranges': [6,4]})
df.rename(index={0:'A',1:'B'}, inplace=True)
'''
BOKEH
'''
sourceTableSummary = ColumnDataSource(df)
Columns = [TableColumn(field=colIndex, title=colIndex) for colIndex in df.columns]
data_table = DataTable(columns=Columns, source=sourceTableSummary, index_position = 0, width = 1900, height = 200, fit_columns=False)
'''
Funcs
'''
def return_value(attr, old, new):
selectionRowIndex=sourceTableSummary.selected.indices[0]
print("Selected Row Index ", str(selectionRowIndex))
selectionValue=sourceTableSummary.data['Apples'][selectionRowIndex]
print("Selected value for Apples ", str(selectionValue))
# selectionColumnIndex?
# selectionRowHeader?
# selectionColumnHeader?
sourceTableSummary.on_change('selected', return_value)
curdoc().add_root(column(children=[data_table]))
这将给出以下可以返回行和所选内容内的值的命令。如果我总是希望返回一个列,这是理想的。然而,选择界面(虚线)似乎表明特定列是已知的,而不仅仅是行。 如果无法获得所选列,是否可以同时使用行索引和单元格值进行查找?在
下面的代码使用JS回调来显示行和列索引以及单元格内容。第二个Python回调是重置索引的技巧,以便可以检测到对同一行的单击(用bokehv1.0.4测试)。使用
bokeh serve show app.py
运行结果:
相关问题 更多 >
编程相关推荐