在Bokeh的折线图中突出显示和标注线

时间:2018-02-02 06:56:36

标签: javascript python bokeh

我正在处理一个回调方法,在给定特定数据帧的情况下随时创建折线图。

def Total_value(DF):
    return pd.DataFrame(pd.DataFrame(DF)['FinalSalePrice'].
                        groupby(level=0, group_keys=False).
                        apply(lambda x: x.sort_values(ascending=False).head(15))).reset_index()

def TOP_Item(data):
    return np.array(data.ItemCode.value_counts()[data.ItemCode.value_counts() > 20].index)

def figure_creator(arr,l):
#     colors = ["#%06x" % random.randint(0,0xFFFFFF) for c in range(len(arr))]
    fig = figure(plot_width=1000, plot_height=300,x_axis_type='datetime')
    for item in arr:
        fig.line(l[l.ItemCode == item].ServicedOn.unique(),l[l.ItemCode == item][np.int(0)], line_width=2)
#         fig.add_tools(HoverTool(show_arrow=False,
#                       line_policy='nearest',
#                       tooltips=None))
    return fig

最后我打电话给:

show(figure_creator(TOP_Item(Total_value(SER_2016)),Total_value(SER_2016)))

enter image description here

我想添加一个Hovertool,它可以突出显示给定的图表并显示该行的标签。

这些的DataFrame非常大,因此我无法在此处上传。 但每个功能的前提解释如下: Total_value:用于计算货币的总价值,数据框中的每个唯一商品都已进行,对它们进行排序,并仅采用前15项。

Top_Item:用于计算15个项目中的哪一个在一年中的14天内出现超过20次(一年中有25个,14天)。进一步返回项目列表。

fig_creator:为每个返回的项创建一行。 ** 有没有办法在每个新生成的线上为hovertool(注释掉)创建一个回调方法?

1 个答案:

答案 0 :(得分:-1)

我用选择工具想出来了。发布可能遇到类似问题的其他人。

def figure_creator(arr,l):
#     colors = ["#%06x" % random.randint(0,0xFFFFFF) for c in range(len(arr))]
    fig = figure(plot_width=1000, plot_height=300,x_axis_type='datetime',tools="reset,hover")
    for item in arr:
#         dicta
        fig.line(l[l.ItemCode == item].ServicedOn.unique(),l[l.ItemCode == item][np.int(0)], line_width=2,alpha=0.4,
                 hover_line_color='red',hover_line_alpha=0.8)
        fig.select(dict(type=HoverTool)).tooltips = {"item":item}
#         fig.add_tools(HoverTool(show_arrow=False,
#                       line_policy='nearest',
#                       tooltips=None))
    return fig

这会呈现: enter image description here