我有多个问题。
首先,我努力让我的Bokeh数字有多行显示悬停工具提示,每行都有值。它在所有线条上都显示相同的值。工具提示(最接近的行的最近数据点的值),而不是每行的点的值。
参见此图片,所有工具提示显示的值为1.我预计为5,3,1而不是1,1,1:
以下是具有相同输出的MCVE:
from bokeh.plotting import figure, show
from bokeh import palettes
from bokeh.models import HoverTool
import itertools
import pandas as pd
dummy = pd.DataFrame({'DT': ['2015-01-01', '2015-01-02', '2015-01-03'], 'Flux': [1, 2, 3], 'Ore': [3, 2, 1], 'Slag': [5, 4, 3]})
dummy.index = pd.to_datetime(dummy['DT'])
dummy.drop('DT', axis=1, inplace=True)
# colour generator
def color_gen():
yield from itertools.cycle(palettes.Category20[len(dummy.columns)])
color = color_gen()
TOOLS = "crosshair,pan,wheel_zoom,box_zoom,zoom_in,zoom_out,reset,save"
p = figure(width=1200, height=600, x_axis_type="datetime", y_axis_label='Kilograms in/out (daily)',
toolbar_location="above", tools=TOOLS, active_scroll="wheel_zoom")
for column in dummy.columns:
x, y = dummy.index.values, dummy[column].values
this_color = next(color)
my_plot = p.line(x, y, legend=column, color=this_color)
p.circle(x, y, legend=column, fill_color="white", line_color=this_color, size=7)
p.add_tools(HoverTool(tooltips=[("Column", " %s" % column),
("Day", "$x{%F}"),
("Weight in/out", "$y{0} kg")],
formatters={'$x': 'datetime'},
mode='vline',
renderers=[my_plot]))
show(p)
接下来,我注意到如果线条彼此靠近,工具提示会重叠。是否可以防止重叠,或者更好的是,在显示x位置的一个角落中创建一个文本块以及所有的线条。 ý'?的
最后,将以下代码添加到自定义HoverTool
,我希望它只显示最接近数据点的值而不是内插值(根据this问题)。但是,它仍然插入。有关修复此问题的任何提示吗?