Python Bokeh:无法更新悬停工具提示的格式
我正在尝试更新已定义的悬停工具提示的格式,但未观察到任何更改。我在下面的示例中所做的更改是在数字和时间刻度(“00:00:00”)之间更改x轴。x轴按预期更新。使用Bokeh版本0.12.16、mac OS X、Safari浏览器 任何关于我做错了什么的提示都是非常感谢的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
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")])