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

问题描述

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

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

我进一步使用了 legend_group 来创建散点图的图例。这很好用。图例如下所示:

0 橙 1 蓝

这是一个代码片段:

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',legend_group='categorization')

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

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

0 蓝 1 蓝

0 橙 1 橙

0 橙色 1

等等。

散点图本身更新得很好。

您知道可能是什么问题吗? 非常感谢提前!

解决方法

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...