Bokeh实时更新fill_color

Update in real time fill_color in Bokeh

我正在尝试从 hex_tile 散景 2.3.3 中 python 3.8 中的实时情节更新 fill_color。更具体地说,我想更新填充图的 linear_cmap 的最大范围。为了更新最大值,我尝试将线性映射器传递到我正在使用的 ColumnDataSource 中的列。我还尝试在图中使用 .update,并将映射器传递给 fill_color:

def update():
    new_data = bin_generate().to_dict(orient='list')
    source.stream(new_data,rollover = 50)
    maper = linear_cmap('counts', 'Viridis256', 0, max(bin_generate().counts))
    f.hex_tile.fill_color=maper
    #f.hex_tile.fill_color={'transform':maper}

data=bin_generate().to_dict(orient='list')
maper = linear_cmap('counts', 'Viridis256', 0, max(bin_generate().counts))

source = ColumnDataSource(data=data)
f = figure(x_range=(-5,5),y_range=(0,6), toolbar_location=None, tools="hover",
         match_aspect=True, background_fill_color='#440154')

f.hex_tile(q="q", r="r",size=0.09, line_color=None, source=source,  
           fill_color=maper)

curdoc().add_root(f)
curdoc().add_periodic_callback(update,100)

如何更新 cmaper 的最大值?

我没有测试过,但这可以工作:

先给个名字

hextile = f.hex_tile(q="q", r="r",size=0.09, line_color=None, source=source,  
           fill_color=maper)

在函数中,添加:

hextile.glyph.fill_color=maper

你应该先从here

看看

另外,你应该给出完整的代码和一些数据来检查它。