python 在散景多线图中,如何只在光标在线时显示悬停提示?

hrirmatl  于 2023-02-11  发布在  Python
关注(0)|答案(1)|浏览(116)

因此,我绘制并显示了各种行的悬停工具提示,如下所示:

def plotter(results, title):

    results = results.rename(columns = dict(zip(results.columns, [col.strip().replace(' ','_') for col in results.columns])))
    source = ColumnDataSource(results)
    p = figure(plot_width=600, plot_height=300)
    
    for color, col in enumerate(results.columns):
        

        glyph = Circle(x='month', y=col,
                 #source=source,
                 size=3, line_color=Turbo256[color*5], fill_color = Turbo256[color*5])
        p.add_glyph(source, glyph)
        p.line(x='month', y = col, source = source, color = Turbo256[color*5], line_width = 1)

    p.title.text = f"Monthly rates trends Based on {title.replace('_',' ').title()} "
    p.xaxis.axis_label = 'Months'
    p.yaxis.axis_label = 'Rates'

    hover=HoverTool(show_arrow=False, line_policy='next', tooltips = [
        (col.replace('_',' ').title(), f'@{col}') for col in results.columns] )   
    
    p.add_tools(hover)

    show(p)

虽然这很好用,但当我在图表上悬停一个点时,它会显示每条线的工具提示。我不想显示所有的工具提示。我只想让这些工具提示显示光标当前所在的位置。就像如果光标在一条线上,则只会显示一个关于该线的工具提示,如果光标在两条线所在的某个点上,它可能会显示两个等等的工具提示。我一直在尝试使用CustomJS,但还没有找到一个方法。任何关于这方面的帮助将是非常有帮助的。

vxqlmq5t

vxqlmq5t1#

这可能在另一个问题中得到解决:"How to show a single value when hovering a Multiline glyph in Bokeh?"
技巧是使用'$data_x'和/或'$data_y'作为散景“特殊字段”:

p.add_tools(HoverTool(show_arrow=False, 
                      line_policy='next', 
                      tooltips=[('X_value', '$data_x'),
                                ('Y_value', '$data_y')
]))

相关问题