1

我想知道什么是让元素属于同一全息图布局但在单独的面板上的最佳方式,pane其轴限制的计算方式与渲染整个布局时的方式相同。

下面的例子更简单。

假设我定义了一个HoloMap我渲染为NdLayout条形图的 a:

df = pd.DataFrame(
    {
        'level_1': ['A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'],
        'level_2': ['C', 'D', 'C', 'D', 'C', 'D', 'C', 'D'],
        'group' : ['group1', 'group1', 'group2', 'group2', 'group1', 'group1', 'group2', 'group2'],
        'values': [3, 1, 9, 11, 5, 6, 1, 3],
    }
)
hv_ds = hv.Dataset(
    df, 
    kdims=['level_1', 'level_2', 'group'],
    vdims='values',
)
layout = hv_ds.to(
    hv.Bars,
    kdims=['level_1', 'level_2'],
    vdims='values',
).layout('group')
layout

此布局清晰呈现,y 轴限制设置为显示条形的顶部:

布局

但是,如果我想为了自定义而将布局的元素分隔在不同pane的 panel 中,则 y 限制是在第一个渲染元素上计算的:

pn.Row(
    pn.Column(
        pn.pane.Markdown("## Group 1"),
        layout['group1'],
    ),
    pn.Column(
        pn.pane.Markdown("## Group 2"),
        layout['group2'],
    )
)

截断的条形图

有没有办法在渲染整个布局时强制计算 y 轴限制?

作为旁注,我注意到如果我渲染完整布局,然后渲染其中的一部分,则轴限制设置正确。也许可以利用这一点,但我不知道如何渲染布局然后隐藏它......

pn.Column(
    layout,
    pn.Row(
        pn.Column(
            pn.pane.Markdown("## Group 1"),
            layout['group1'],
        ),
        pn.Column(
            pn.pane.Markdown("## Group 2"),
            layout['group2'],
        )
    ),
)

布局和面板行

4

0 回答 0