color_mapper 基于分类数据隐藏散景字形

Hiding Bokeh glyphs based on categorical data with color_mapper

目前我找到了一种使用 color_mapperlegend_field 变量绘制分类数据的方法。我的数据如下所示:

df_plot
              x          y    category
0     91.587097  -3.761215        cat1
1    169.068802 -11.131036        cat2
2     64.201126   3.333073        cat1
3     78.828232   6.910666        cat3
4     51.033684  -6.213269        cat1
..          ...        ...         ...
160  -24.078451    5.34703        cat1
161  104.982063  -1.674969        cat2
162   55.020164  -1.134725        cat3
163  233.567902    2.50064        cat2
164   83.931938    7.92193        cat1

我想隐藏基于分类图例的字形,如 bokehs website 中的示例:

 source = ColumnDataSource(data=df)
 category = ['cat1', 'cat2', 'cat3']
 color_mapper = factor_cmap('category', palette=Category10_3, factors=category)
        
 plot = figure(x_range=(-x_range, x_range),
               y_range=(y_range[0], y_range[1]),
               title=title,
               width=500,
               height=800,
               tools=TOOLS
               )
      
 plot.circle(x='x', 
             y='y',
             size=8, 
             source=source, 
             color=color_mapper,
             legend_field='category'
             ) 

plot.legend.click_policy='hide'

我得到以下结果:

现在我只能一次隐藏所有类别。有没有办法用 color_mapper 做到这一点,还是我必须事先拆分数据并遍历每个类别?

您可以使用 CDSView、BooleanFilter 来过滤数据。 here 是个小例子。 link 与 on_change 或 js 发生变化。