首页 > 解决方案 > 散景:无法更新悬停工具提示的格式

问题描述

我正在尝试更新已定义的悬停工具提示的格式,但我没有观察到任何变化。我在下面的示例中所做的更改是更改数字和时间刻度('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))

标签: pythonbokeh

解决方案


BokehJS 代码对tooltips. 您需要tooltips完全替换该值。例如,这个简化的代码按预期工作:

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")])

在此处输入图像描述


推荐阅读