如何在散景小部件之间添加间距
How to add spacing between Bokeh widgets
我想知道在 Bokeh 中添加小部件之间间距的最佳方法是什么?现在我正在使用空的 Div 来获得一些间距,但这真的很笨拙,因此问题。
import pandas as pd
from bokeh.plotting import figure,show
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import DataTable, TableColumn, Div
from bokeh.layouts import row, column
from bokeh.models.widgets import MultiSelect, Button, RadioGroup
def test_view(request):
# Quick data
original_data = dict(length=[2, 10, 20, 40, 60, 80, 70, 50, 15, 36, 76, 74, 72, 44, 36, 18, 40, 64, 40, 64, 40, 30, 120],
weight=[2, 100, 150, 200, 420, 700, 600, 300, 200, 200, 620, 610, 601, 610, 601, 80, 205, 80, 800, 700, 240, 160, 800])
original_data = pd.DataFrame(original_data)
source = ColumnDataSource(original_data)
# Quick plot
plot = figure(title = 'title')
plot.circle(x='length', y='weight', source=source)
# Quick table
columns = [TableColumn(field="length", title="length", width=100),
TableColumn(field="weight", title="weight", width=100)]
data_table = DataTable(source=source, columns=columns)
# Quick widgets
some_button = Button(label="button", button_type="success")
some_radiogroup = RadioGroup(labels=["1", "2"], active=0)
some_multiselect = MultiSelect(title='multiselect:', value=[], options=[])
# Spacing
dumdiv1 = Div(text='', width=10)
dumdiv2 = Div(text='', width=10)
widgets_layout = column(some_button, dumdiv1, some_radiogroup, dumdiv2, some_multiselect)
figures_layout = row(plot, data_table)
page_layout = row(widgets_layout, figures_layout)
show(page_layout)
谢谢,
Widget
class 扩展了具有 margin
属性的 LayoutDOM
class。
from bokeh.io import show
from bokeh.layouts import gridplot
from bokeh.models import Div
def mk_div(**kwargs):
return Div(text='<div style="background-color: green; width: 100px; height: 100px;">DIV</div>', **kwargs)
divs = [mk_div(), mk_div(), mk_div(),
mk_div(), mk_div(margin=(10, 20, 30, 40)), mk_div(),
mk_div(), mk_div(), mk_div()]
show(gridplot(divs, ncols=3))
我想知道在 Bokeh 中添加小部件之间间距的最佳方法是什么?现在我正在使用空的 Div 来获得一些间距,但这真的很笨拙,因此问题。
import pandas as pd
from bokeh.plotting import figure,show
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import DataTable, TableColumn, Div
from bokeh.layouts import row, column
from bokeh.models.widgets import MultiSelect, Button, RadioGroup
def test_view(request):
# Quick data
original_data = dict(length=[2, 10, 20, 40, 60, 80, 70, 50, 15, 36, 76, 74, 72, 44, 36, 18, 40, 64, 40, 64, 40, 30, 120],
weight=[2, 100, 150, 200, 420, 700, 600, 300, 200, 200, 620, 610, 601, 610, 601, 80, 205, 80, 800, 700, 240, 160, 800])
original_data = pd.DataFrame(original_data)
source = ColumnDataSource(original_data)
# Quick plot
plot = figure(title = 'title')
plot.circle(x='length', y='weight', source=source)
# Quick table
columns = [TableColumn(field="length", title="length", width=100),
TableColumn(field="weight", title="weight", width=100)]
data_table = DataTable(source=source, columns=columns)
# Quick widgets
some_button = Button(label="button", button_type="success")
some_radiogroup = RadioGroup(labels=["1", "2"], active=0)
some_multiselect = MultiSelect(title='multiselect:', value=[], options=[])
# Spacing
dumdiv1 = Div(text='', width=10)
dumdiv2 = Div(text='', width=10)
widgets_layout = column(some_button, dumdiv1, some_radiogroup, dumdiv2, some_multiselect)
figures_layout = row(plot, data_table)
page_layout = row(widgets_layout, figures_layout)
show(page_layout)
谢谢,
Widget
class 扩展了具有 margin
属性的 LayoutDOM
class。
from bokeh.io import show
from bokeh.layouts import gridplot
from bokeh.models import Div
def mk_div(**kwargs):
return Div(text='<div style="background-color: green; width: 100px; height: 100px;">DIV</div>', **kwargs)
divs = [mk_div(), mk_div(), mk_div(),
mk_div(), mk_div(margin=(10, 20, 30, 40)), mk_div(),
mk_div(), mk_div(), mk_div()]
show(gridplot(divs, ncols=3))