在Bokeh中更新multi_line数据源时,如何更新线条颜色?
Bokeh multi_line组件更新数据及颜色的正确方法
问题根源
你遇到的颜色不生效问题,是因为创建multi_line时没有将颜色属性与数据源的字段绑定,导致更新数据源里的颜色值无法被组件识别。
解决步骤
初始创建图表时绑定颜色字段
创建multi_line时,必须通过line_color参数指定要绑定的数据源字段名(比如'color'),这样组件才会读取数据源中的颜色值为每条线上色:from bokeh.plotting import figure, show p = figure() # 指定line_color绑定数据源的color字段,同时设置线条宽度增强效果 p.multi_line(xs=[[0,1]], ys=[[0,1]], name='my_lines', line_color='color', line_width=2) show(p)更新数据源数据
后续更新时,确保数据源中包含color字段(与创建时绑定的字段名一致),直接更新data_source.data即可:lines_ds = p.document.get_model_by_name('my_lines').data_source lines_ds.data = dict( xs=[[1,2,3],[0,0]], ys=[[0,1,0],[0,1]], color=['black','red'] ) show(p)
额外说明
- 如果是在Bokeh Server的交互式场景中,无需再次调用
show(p),更新data_source.data后,图表会自动同步更新。 multi_line的颜色参数是line_color(单数形式),绑定字段后,Bokeh会自动将字段列表中的每个值对应到每条线上。
内容的提问来源于stack exchange,提问作者jpobst
相关产品推荐
相关产品推荐

