如何在带有一些空单元格的 Bokeh 中创建绘图网格

how to create a grid of plots in Bokeh w/ some empty cell(s)

我知道在 Bokeh 中将图组合在一起的 2 种不同方法:网格和 HBox/VBox。我想要一种创建 n x m 网格的通用方法,其中网格的某些单元格可以为空。例如,如果每个 X 都是一个绘图图形,可能需要:

X X X
  X
X X X

我还没有找到一个通用的方法来做到这一点。假设我已经创建了地块:

import numpy as np
import bokeh.plotting as bp
from bokeh.models import GridPlot

bp.output_file("/tmp/test.html", "test")

def random_plot (width, height, k=100):
    x = np.arange(k)
    y = np.random.normal(size=k)
    plot = bp.figure (
        plot_width=width, plot_height=height, title=None,
        toolbar_location=None)
    plot.line(x,y)
    return plot

UL = random_plot(width=300, height=400)
UR = random_plot(width=600, height=400)
LL = random_plot(width=300, height=200)
LR = random_plot(width=600, height=200)

我不能使用 GridPlot(据我所知)创建绘图:

UL UR
   LR

以下无效:

grid = GridPlot(children=[[UL, UR], [None, LR]])
bp.show (grid)

我可以使用 HBox 和 VBox 的组合来实现上面的简单布局:

left = bp.VBox(children=[UL])
right = bp.VBox(children=[UR,LR])
combined = bp.HBox (children=[left,right])
bp.show(combined)

但是,无法处理更复杂的情况,例如上面显示的 3 x 3 配置。

我想让数字对齐。我可以将一个不可见的元素放入网格中以满足缺失的单元格吗?如果是,怎么做?

更新
碰巧的是,有人在 Bokeh 邮件列表上提出了这个要求(目前似乎不支持)。希望很快成为 GridPlot 的新功能。

Bokeh 0.7.1(将于下周一发布)将在 grid pot 规范中允许 None