DataTable в макете Bokeh, заставляя пустое пространство в строке - PullRequest
0 голосов
/ 16 октября 2019

Я использую Bokeh gridplot для разметки фигуры, виджетов и таблицы данных. После обновления до Bokeh 1.3.4 мой макет изменился, и между рисунком и группами флажков было вставлено пространство. Смотрите скриншот ниже:

enter image description here

Кажется, что width=1000 из DataTable заставляет пробел. Если я удаляю DataTable, макет отображается правильно, с группами флажков, расположенными непосредственно рядом с рисунком радиального графика.

Вот мой соответствующий код для макета:

#-------------------------------------------------------------------------------
# LAYOUT
#-------------------------------------------------------------------------------
hor_layout_date_slider = (
    row(
      column(blank_wb),
      column(date_slider_wb),
    )
)

hor_layout_time_cb = (
    row(
      column(div_time),
      column(rg_time),
    )
)

vert_layout_1 = (
    column(
      row(div_zone),
      row(cb_zone),
      row(div_trigger),
      row(cb_trigger),
    )
)

vert_layout_2 = (
    column(
      row(div_location),
      row(cb_location),
      row(div_type),
      row(cb_type),
    )
)

grid = gridplot(
  children = [
    [hor_layout_date_slider],
    [hor_layout_time_cb],
    [scatter_fig, vert_layout_1, vert_layout_2],
    [data_table]
    ],
    toolbar_options=dict(logo=None),
    sizing_mode='fixed',
)

curdoc().add_root(grid)

Каждый элемент имеет собственную высоту и ширину, все равно sizing_mode='fixed'. Радиальный график имеет width=600, height=600, и каждая группа флажков width=200, height=105 содержит Div элементов для заголовков, каждый из которых width=200, height=15.

Как изменить макет, чтобы получить флажокгруппы, расположенные непосредственно рядом с рисунком (и над таблицей)?

1 Ответ

0 голосов
/ 17 октября 2019

Нашел решение для моего собственного вопроса.

Если я использую layout вместо gridplot, все работает.

Комментированный код показывает оригинальную реализацию, а новый код показывает пересмотренную реализациюиспользование layout:

from bokeh.layouts import gridplot, layout

#grid = gridplot(
  #children = [
    #[hor_layout_date_slider],
    #[hor_layout_time_cb],
    #[scatter_fig, vert_layout_1, vert_layout_2],
    #[data_table]
    #],
    #toolbar_options=dict(logo=None),
    #sizing_mode='fixed',
#)

grid = layout(
  children=[
    [hor_layout_date_slider],
    [hor_layout_time_cb],
    [scatter_fig, vert_layout_1, vert_layout_2],
    [data_table]
    ],
    sizing_mode='fixed',
)

Обратите внимание, что мне также пришлось удалить toolbar_options, так как это недопустимый атрибут при использовании layout.

...