我有多个问题。
首先,我很难得到我的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位置和所有线的y's?
最后,将下面的代码添加到自定义的HoverTool
中,我希望它只显示最近数据点的值,而不是插值值(按照this问题)。然而,它仍然插值。有什么解决办法吗?
发布于 2018-02-22 03:59:56
像这样更改HoverTools并检查它显示与它们的行对应的不同值。
p.add_tools(HoverTool(tooltips=[("Column", " %s" % column),
("Day", "$x{%F}"),
("Weight in/out", "@y kg")],
formatters={'$x': 'datetime'},
mode='vline',
renderers=[my_plot]))
如果这对你有用的话请告诉我。
这张图会像这样。
https://stackoverflow.com/questions/48865787
复制相似问题