【发布时间】:2019-05-03 07:16:32
【问题描述】:
我从其他来源获取了以下代码 - 这不是我自己的代码。
该代码允许您在数据表中选择一个单元格,该单元格的“下载”数据将根据所选单元格的行绘制图表。
如何扩展此代码,以便如果我有多个变量(例如“下载”和“上传”)以及数据表中的更多列,我可以基于该单元格绘制数据图表(因此行和列是重要的)?或者,如何将选定单元格的列号定义为变量(与下面的 selected_row 可用于定义行号相同)?
from datetime import date
from random import randint
from bokeh.models import ColumnDataSource, Column
from bokeh.plotting import figure, curdoc
from bokeh.models.widgets import DataTable, DateFormatter, TableColumn, Div
import numpy as np
data = dict(dates = [date(2014, 3, i + 1) for i in range(10)],
downloads = [randint(0, 100) for i in range(10)])
d_source = ColumnDataSource(data)
columns = [TableColumn(field = "dates", title = "Date", formatter = DateFormatter()),
TableColumn(field = "downloads", title = "Downloads")]
data_table = DataTable(source = d_source, columns = columns, width = 400, height = 280)
def table_select_callback(attr, old, new):
selected_row = new[0]
download_count = data['downloads'][selected_row]
chart_data = np.random.uniform(0, 100, size = download_count)
p = figure(title = 'bla')
r = p.line(x = range(len(chart_data)), y = chart_data)
root_layout.children[1] = p
d_source.selected.on_change('indices', table_select_callback)
root_layout = Column(data_table, Div(text = 'Select Date'))
curdoc().add_root(root_layout)
【问题讨论】: