Python Bokeh:无法更新悬停工具提示的格式

Python Bokeh:无法更新悬停工具提示的格式,python,bokeh,Python,Bokeh,我正在尝试更新已定义的悬停工具提示的格式,但未观察到任何更改。我在下面的示例中所做的更改是在数字和时间刻度(“00:00:00”)之间更改x轴。x轴按预期更新。使用Bokeh版本0.12.16、mac OS X、Safari浏览器 任何关于我做错了什么的提示都是非常感谢的 from bokeh.plotting import figure, ColumnDataSource from bokeh.models import HoverTool, NumeralTickFormatter, Ada

我正在尝试更新已定义的悬停工具提示的格式,但未观察到任何更改。我在下面的示例中所做的更改是在数字和时间刻度(“00:00:00”)之间更改x轴。x轴按预期更新。使用Bokeh版本0.12.16、mac OS X、Safari浏览器

任何关于我做错了什么的提示都是非常感谢的

from bokeh.plotting import figure, ColumnDataSource
from bokeh.models import HoverTool, NumeralTickFormatter, AdaptiveTicker
from bokeh.models.widgets import RadioGroup
from bokeh.layouts import row, widgetbox
from bokeh.io import curdoc


def update_axis_format(new):
    if new == 0:
        format_num = '0'
        mantissas= [1,2,5]
    else:
        format_num = '00:00:00'
        mantissas=[3.6, 7.2, 18]

    p.xaxis[0].formatter = NumeralTickFormatter(format = format_num)
    p.xaxis.ticker = AdaptiveTicker(base = 10, mantissas = mantissas)
    p.xgrid.ticker = AdaptiveTicker(base = 10, mantissas = mantissas)
    p.tools[0].tooltips[2] = ("x", "@x{{{}}}".format(format_num))


source = ColumnDataSource(data=dict(
    x=[10, 2000, 10000, 40000, 50000],
    y=[2, 5, 8, 2, 7],
    desc=['A', 'b', 'C', 'd', 'E'],
))

hover = HoverTool(tooltips=[
    ("index", "$index"),
    ("desc", "@desc"),
    ("x", "@x")
])

p = figure(plot_width=400, plot_height=400, tools=[hover],
           title="Mouse over the dots")

p.circle('x', 'y', size=20, source=source)

xaxis_format = RadioGroup(
        labels=["x-axis as number", "x-axis as time"], active=0)

xaxis_format.on_click(update_axis_format)

widget = widgetbox(xaxis_format)

curdoc().add_root(row(widget,p))

BokehJS代码对工具提示的“内部”(即就地)更改不敏感。您需要完全替换
工具提示
值。例如,此简化代码按预期工作:

def update_axis_format(new):
    if new == 0:
        format_num = '0'
        mantissas= [1,2,5]
    else:
        format_num = '00:00:00'
        mantissas=[3.6, 7.2, 18]

    p.xaxis[0].formatter = NumeralTickFormatter(format = format_num)
    p.xaxis.ticker = AdaptiveTicker(base = 10, mantissas = mantissas)
    p.xgrid.ticker = AdaptiveTicker(base = 10, mantissas = mantissas)

    # replace all of tooltips, not just part
    p.tools[0].tooltips = [("x", "@x{{{}}}".format(format_num))]

hover = HoverTool(tooltips=[("x", "@x")])