Bokeh, how to change column used for glyph colors with CustomJS callbacks?

后端 未结 1 1575
爱一瞬间的悲伤
爱一瞬间的悲伤 2020-12-11 09:03

I\'m using Bokeh to create scatter plots by passing a ColumnDataSource to the figure.circle function. The data source has columns that designate ce

相关标签:
1条回答
  • 2020-12-11 09:57

    Here is an example of a solution using a models.Select widget and models.CustomJS to select out of two coloring schemes defined in the ColumnDataSource of Figure.circle:

    import bokeh
    import bokeh.plotting
    p = bokeh.plotting.figure(x_range=(0,4), y_range=(0,4), plot_height=200 )
    csource = bokeh.models.ColumnDataSource(data=dict(
            x=[1,2,3],
            y=[1,2,1],
            colors1=["#ff0000","#00ff00","#0000ff"],
            colors2=["#ff00ff","#ffff00","#00ffff"]))
    cir = p.circle(x="x",y="y",fill_color="colors1",line_color="colors1",
                   size=20,source=csource)
    cb_cselect = bokeh.models.CustomJS(args=dict(cir=cir,csource=csource), code ="""
        var selected_color = cb_obj.value;
        cir.glyph.line_color.field = selected_color;
        cir.glyph.fill_color.field = selected_color;
        csource.trigger("change")
    """)
    color_select = bokeh.models.Select(title="Select colors", value="colors1", 
                        options = ["colors1","colors2"], callback = cb_cselect)
    layout = bokeh.layouts.gridplot([[p],[color_select]])
    bokeh.io.output_file("output.html")
    bokeh.io.show(layout)
    

    The output looks like

    0 讨论(0)
提交回复
热议问题