私のbokeh appには、特別なデザインがあります。私はbokeh 0.12.3
とボケサーバーを使ってすべてを同期させています。静的ナビゲーションバー、ビューの右部分手動で追加されたプロット、で構成されますがあり、左側にプロットとウィジェットの配置のためのbokehレイアウト
:、私のモックアップを見てください。右側のプロット列の量はw.r.tに変更されます。ウィンドウサイズ。私は、bokehレイアウトのドキュメントlaying out plots and widgetsをよく知っていますが、もう少し複雑です。私が使用して新しいプロットを追加するために
doc_layout = layout(children=[[column(radio_buttons,
cbx_buttons,
div,
data_table,
plot,
button)]],
sizing_mode='scale_width')
curdoc().add_root(doc_layout)
:
doc_layout.children[-1].children.append(plot)
# appends plot to layout children [[column(..), plot]]
しかし行動は、私が実際に達成したいのか全くない非常に奇妙で、そしてこれは、私が現在持っているレイアウトです。代わりに新しいプロットが列の上に追加されます(メニューパネル)。ここで
、あなたは私が何を意味するか確認するために試してみることができ、短い例:
from bokeh.io import curdoc
from bokeh.plotting import figure
from bokeh.models.sources import ColumnDataSource
from bokeh.models.widgets import Button, DataTable, TableColumn
from bokeh.layouts import layout, widgetbox, column, row
WIDTH = 200
HEIGHT = 200
def add_plot():
p = figure(width=WIDTH, height=HEIGHT, tools=[], toolbar_location=None)
p.line([0, 1, 2, 3, 4, 5], [0, 1, 4, 9, 16, 25])
doc_layout.children[-1].children.append(p)
src = ColumnDataSource(dict(x=[0, 1, 2, 3, 4, 5], y=[0, 1, 4, 9, 16, 25]))
t1 = DataTable(source=src, width=WIDTH, height=HEIGHT,
columns=[TableColumn(field='x', title='x'),
TableColumn(field='y', title='y')])
b = Button(label='add plot')
b.on_click(add_plot)
doc_layout = layout([[widgetbox(b, t1)]], sizing_mode='scale_width')
curdoc().add_root(doc_layout)
私はこの問題を克服するための最良の解決策は何かわかりません。私はさまざまな組み合わせでgridplot()
、column()
/row()
異なるサイジングモードでlayout()
からいくつかを試しました。ナビゲーションメニューではなく左側にページの上に置いた私の以前のバージョンでは、すべてが動作するように見えた:
layout(children=[[widgetbox(radio_button, cbx_button),
widgetbox(data_table),
widgetbox(div),
widgetbox(button)],
[Spacer()]],
sizing_mode='scale_width')
私たちは:) – percusse
まあ、それはとなり行うための最も快適な方法を話すように私は非常に同様の問題と戦っている: '行(列を(..、sizing_mode =「固定」)、 layout(..、sizing_mode = 'scale_width')) ' しかし、サイジングモードはトップレイアウトで上書きされていると思います。 – jofroe