多个HoverTools用于不同的线条(散景) [英] Multiple HoverTools for different lines (bokeh)

查看:76
本文介绍了多个HoverTools用于不同的线条(散景)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在散景图上有多条线,并且我希望HoverTool显示每条线的值,但是使用上一个stackoverflow答案中的方法不起作用:

I have more than one line on a bokeh plot, and I want the HoverTool to show the value for each line, but using the method from a previous stackoverflow answer isn't working:

https://stackoverflow.com/a/27549243/3087409

以下是该答案的相关代码段:

Here's the relevant code snippet from that answer:

fig = bp.figure(tools="reset,hover")
s1 = fig.scatter(x=x,y=y1,color='#0000ff',size=10,legend='sine')
s1.select(dict(type=HoverTool)).tooltips = {"x":"$x", "y":"$y"}
s2 = fig.scatter(x=x,y=y2,color='#ff0000',size=10,legend='cosine')
fig.select(dict(type=HoverTool)).tooltips = {"x":"$x", "y":"$y"}

这是我的代码:

from bokeh.models import HoverTool
from bokeh.plotting import figure

source = ColumnDataSource(data=dict(
    x = [list of datetimes]
    wind = [some list]
    coal = [some other list]
    )
)

hover = HoverTool(mode = "vline")

plot = figure(tools=[hover], toolbar_location=None,
    x_axis_type='datetime')

plot.line('x', 'wind')
plot.select(dict(type=HoverTool)).tooltips = {"y":"@wind"}
plot.line('x', 'coal')
plot.select(dict(type=HoverTool)).tooltips = {"y":"@coal"}

据我所知,它等同于我链接到的答案中的代码,但是当我将鼠标悬停在该图上时,两个悬停工具框都显示相同的值,即wind的值.

As far as I can tell, it's equivalent to the code in the answer I linked to, but when I hover over the figure, both hover tools boxes show the same value, that of the wind.

推荐答案

您需要为每个图添加渲染器.检查一下.另外,不要将same y label用于两个值都更改名称.

You need to add renderers for each plot. Check this. Also do not use samey label for both values change the names.

from bokeh.models import HoverTool
from bokeh.plotting import figure

source = ColumnDataSource(data=df)

plot = figure(x_axis_type='datetime',plot_width=800, plot_height=300)

plot1 =plot.line(x='x',y= 'wind',source=source,color='blue')
plot.add_tools(HoverTool(renderers=[plot1], tooltips=[('wind',"@wind")],mode='vline'))

plot2 = plot.line(x='x',y= 'coal',source=source,color='red')
plot.add_tools(HoverTool(renderers=[plot2], tooltips=[("coal","@coal")],mode='vline'))

show(plot)

输出看起来像这样.

The output look like this.

这篇关于多个HoverTools用于不同的线条(散景)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆