You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何消除Bokeh布局中Column内DataTable间的垂直空白?

解决Bokeh DataTable布局中垂直空白过多的问题

我之前也碰到过一模一样的问题!其实这是因为Bokeh的DataTable默认会预留不少垂直空间来适配滚动、动态行高这类场景,再加上布局默认的间距,就会出现大量空白。咱们可以通过几个简单的属性调整来解决:

关键修改点

  • 给DataTable指定固定高度:根据表格的行数手动设置height,避免默认的超大预留空间
  • 关闭不需要的行头:如果你的场景不需要行索引列,设置row_headers=False能减少额外宽度和空白
  • 缩小布局间距:调整column的spacing参数,减小表格之间的垂直距离
  • 自适应宽度:给DataTable设置sizing_mode='stretch_width'让表格宽度适配容器,视觉上更紧凑

修改后的示例代码

%matplotlib notebook
import os
import locale
import numpy as np
import pandas as pd
from bokeh.plotting import figure, show
from bokeh.io import output_notebook
from bokeh.resources import INLINE
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import DataTable, TableColumn
from bokeh.layouts import column

output_notebook(resources=INLINE)
l = []
for x in range(1,4):
    matriz = np.random.random((3,3))
    source = ColumnDataSource(data = dict(A=matriz[:,0], B=matriz[:,1], C=matriz[:,2]))
    columns = [TableColumn(field='A',title='A'), TableColumn(field='B', title='B'), TableColumn(field='C', title='C')]
    # 核心修改:指定高度、关闭行头、自适应宽度
    data_table = DataTable(
        source=source,
        columns=columns,
        height=130,  # 3行数据+表头,这个高度刚好适配
        row_headers=False,
        sizing_mode='stretch_width'
    )
    l.append(data_table)
# 调整布局间距,默认是20,这里设为5更紧凑
show(column(l, sizing_mode='fixed', spacing=5))

额外说明

如果你的表格行数不固定,可以根据数据源的长度动态计算height,比如:

row_count = len(source.data['A'])
# 每行大概30px,表头40px,留一点余量
data_table.height = row_count * 30 + 50

这样调整后,表格之间的垂直空白就会大幅减少,布局会紧凑很多!

内容的提问来源于stack exchange,提问作者Marcus Vinicius Eiffle Duarte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:29:24