带有 HoverTool 的散景线图

Posted

技术标签:

【中文标题】带有 HoverTool 的散景线图【英文标题】:Bokeh Line Plot with HoverTool 【发布时间】:2014-10-16 11:45:38 【问题描述】:

我想将 Bokeh HoverTool 与线/散点图一起使用。下面是代码(大部分来自http://docs.bokeh.org/docs/gallery/correlation.html)。在我的示例中,悬停仅显示“acme”行的信息,我无法弄清楚如何使其适用于另一行“choam”。有什么建议/解决方案吗?

from numpy import cumprod, linspace, random
import time
from bokeh.plotting import *
from bokeh.objects import GridPlot, HoverTool

num_points = 20

now = time.time()
dt = 24*3600 
dates = linspace(now, now + num_points*dt, num_points)
acme = cumprod(random.lognormal(0.0, 0.04, size=num_points))
choam = cumprod(random.lognormal(0.0, 0.04, size=num_points))

output_file("correlation.html", title="correlation.py example")

source = ColumnDataSource(
    data=dict(
        acme=acme,
        choam=choam,
        dates=dates
    )
)

figure(x_axis_type = "datetime", tools="hover,pan,wheel_zoom,box_zoom,reset,previewsave")

hold()

line(dates, acme, color='#1F78B4', legend='ACME')
line(dates, choam, color='#FB9A99', legend='CHOAM')

scatter(dates, acme, color='#1F78B4', source = source, fill_color=None, size=8)
scatter(dates, choam, color='#33A02C', fill_color=None, size=8)

curplot().title = "Stock Returns"
grid().grid_line_alpha=0.3


hover = [t for t in curplot().tools if isinstance(t, HoverTool)][0]
hover.tooltips = OrderedDict([
    ('Price', "@acme"),
    ('Price', "@choam"),
    ('Date', "@dates"),
    ('Date', "@dates"),
])

show() 

【问题讨论】:

您的代码实际上似乎对我有用,就像当前版本的 Bokeh (0.4.4) 一样 自 (0.8.2) 起,这不起作用,因为散景的导入已更改。不过可能很容易修复...... 【参考方案1】:

对于 0.8,我在多个绘图中使用了类似的东西:

source1 = ColumnDataSource(
    data=dict(
        acme=acme,
        dates=dates
    )
)

source2 = ColumnDataSource(
    data=dict(
        choam=choam,
        dates=dates
    )
)

scatter(dates, acme, color='#1F78B4', source = source1, fill_color=None, size=8)
scatter(dates, choam, color='#33A02C', source = source2, fill_color=None, size=8)

不保证它会继续工作 - 仍在等待行工具提示:)

【讨论】:

以上是关于带有 HoverTool 的散景线图的主要内容,如果未能解决你的问题,请参考以下文章

带有 `import bokeh` 的烧瓶,带有 2 个没有外部散景服务器的散景图,而不是“模型只能由一个文档拥有”

用于不同线条的多个 HoverTools(散景)

散景 - 为补丁图上的单个字形创建自定义hovertool

Django中的散景图返回空白页

Django网站中的散景渲染问题

在意大利地图上呈现数据的散景