【问题标题】:Python Bokeh -- Incorporate HoverToolTip into Bar Chart by using DataFrame ColumnsPython Bokeh -- 使用 DataFrame Columns 将 HoverToolTip 合并到条形图中
【发布时间】:2017-02-24 09:50:32
【问题描述】:

我的目标是创建一个表示直方图的散景条形图。理想情况下,我希望启用悬停工具提示,以便将鼠标悬停在列上将显示该点的总累积值。

我的原始数据框如下所示:

           Buckets     Data1_%   Data2_%
0  (0.0166, 0.283]  16.886842 17.242004
1      (0.3, 0.32]   1.111779  1.284348

为了让我的条形图与 Data1_% 和 Data2_% 的并排视图,我需要以下列方式调用 pd.melt():

df_temp = pd.melt(df, id_vars = "Buckets", value_vars = ["Data1_%", "Data2_%"])

然后使数据框看起来像这样:

           Buckets    variable      value
0   (0.0166, 0.283]    Data1_%  16.886842
1       (0.3, 0.32]    Data1_%   1.111779

其中“变量”包含“Data1_%”或“Data2_%”作为两个可能项。

最后,我生成我的图并尝试以这种方式绘制它:

bar = Bar(df_temp, label = "Buckets", values = "value", group = "variable")
bar.add_tools(HoverTool(tooltips = [("TestValue", "@value")]))
show(bar)

条形图渲染良好,如下所示:

这正是我想要的!悬停工具已启用并工作,但它始终显示“???”作为值,这意味着它没有像我想的那样从我的数据帧 (df_temp) 中提取。

理想情况下,它会显示两个数据点:“变量”字段的值和“值”字段的值。

所以对于我的第一个数据点,我希望它能够显示:

变量:Data1_% 值:16.886842

等等。但我会很高兴让 value 参数起作用。

任何提示将不胜感激!我已经尝试阅读有关将我的数据框更改为 ColumnDataSource 和其他此类技巧的文档,但我非常感谢看到一些有关如何使这项工作的代码。

谢谢!

编辑:快速跟进问题。如何在我的 BokehChart 上强制执行排序?我希望数据以与我在数据框中列出的顺序相同的顺序显示,但 Bokeh 似乎有时会混淆这些值并以看似随机的顺序吐出东西。我认为 Bokeh 应该很容易与 Dataframes 一起使用!

【问题讨论】:

    标签: python pandas plot hover bokeh


    【解决方案1】:

    旧的bokeh.charts,包括Bar 已被弃用并随后被删除。要在 Bokeh(带有工具提示)中创建直方图,您应该使用稳定的 bokeh.plotting API。有多种可能的方法可以做到这一点,但这里有一个使用 Bokeh 0.13.0 创建的完整示例:

    import numpy as np
    from bokeh.plotting import figure, show
    
    measured = np.random.normal(0, 0.5, 1000)
    hist, edge = np.histogram(measured, density=True, bins=50)
    
    p = figure(tooltips="top: @top")
    p.quad(top=hist, bottom=0, left=edge[:-1], right=edge[1:], line_color="white")
    
    show(p)
    

    【讨论】:

    • 接受了这个答案——这是一个老问题,但其他人也可能会偶然发现这个问题。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-17
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 2018-08-16
    相关资源
    最近更新 更多