散景:使用不同视图时更新图例

Bokeh: Updating of legend when using different views

我在散景中更新 legend_groups 时遇到问题:

我的数据基于四列:x 值、y 值、分类、地理。我在 Bokeh 中创建了一个散点图,所有散点都来自相同的 x 和 y 列。我根据分类列将散点分为两类(0 和 1)。然后我使用 factor_mark 和 factor_color 来显示不同颜色的两个类别(橙色 vs 蓝色)。

我进一步使用 legend_group 为散点图创建图例。那很好用。图例如下所示:

0 orange 1 blue

这里是一段代码:

renderer_scatter = plot.scatter(
    x='x', y='y', source=data_provider,
    view=data_provider.geography, size=5, fill_alpha=0.4,
    marker=factor_mark('x', ['hex', 'triangle'], 'categorization'),
    color=factor_cmap('x', 'Category10_3', 'categorization'), legend_group='categorization')

我进一步在我的仪表板中添加了一个下拉菜单,它根据地理位置指定了我的数据视图。

不幸的是,当我更改视图时,legend_group 没有正确更新。根据地理位置,它看起来像这样:

0 blue 1 blue

0 orange 1 orange

0 orange 1

等等。

散点图本身更新得很好。

您知道问题出在哪里吗? 非常感谢!

legend_group 是 shorthand 计算图例条目 一次 的便利,当图形在 Python 中创建时。如果你需要对数据变化做出动态反应的东西,那么你想使用 legend_field ,它是在浏览器的“JavaScript 端”计算的。 (或者,您可以完全手动管理 LegendItem 个对象,随着数据的变化添加和删除。)