Когда я читаю документацию Bokeh на datatable, опция переупорядочивания, кажется, указывает на то, что переупорядочивание перетаскиванием возможно.

»Позволяет переупорядочивать столбцы таблицы. Чтобы изменить порядок столбца, щелкните и перетащите заголовок таблицы в нужное место в таблице. Столбцы с обеих сторон останутся в прежнем порядке ».

Я не могу заставить это работать. Код ниже. Кто-нибудь знает, как это работает?

import numpy as np
import pandas as pd

from bokeh.io import curdoc
from bokeh.layouts import column, widgetbox
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import DataTable, TableColumn

df = pd.DataFrame(columns=['x1', 'x2'])
n=10
np.random.seed(0)
df['x1'] = np.random.rand(n)
df['x2'] = np.random.rand(n)

source = ColumnDataSource(df)
columns=[TableColumn(field=Ci, title=Ci) for Ci in df.columns]
data_table = DataTable(source=source, columns=columns, name="table", sizing_mode="scale_both", reorderable=True, sortable=True, fit_columns=True)
l1 = widgetbox([data_table])

curdoc().add_root(l1)
1
marcus 10 Окт 2019 в 09:33

1 ответ

Лучший ответ

Я не уверен, насколько хорошо это задокументировано, но если вы посмотрите в JS-консоль браузера, вы увидите причину:

[боке] - «jquery-ui необходим для включения DataTable.reorderable» document.js: 1

Мы не включаем jq-ui автоматически, потому что нет никакого способа оправдать такое раздувание пакетов только из-за этой крошечной функции. (Который, очевидно, почти никто не пытается использовать, это первый вопрос за ~ 6 лет).

Итак, вам нужно будет создать шаблон для вашего приложения Bokeh и явно загрузить jquery и jquery-ui в шаблон. Что-то вроде:

<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/themes/base/jquery-ui.css" type="text/css" media="all" /> 
<script src="http://ajax.aspnetcdn.com/ajax/jQuery/jquery-1.5.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.9/jquery-ui.min.js" type="text/javascript"></script>

Вы можете увидеть пример использования шаблона для приложения Bokeh в gapminder пример.

1
bigreddot 11 Окт 2019 в 00:19