如何在Bokeh Hovertool中仅显示整数

时间:2017-07-06 20:30:52

标签: python bokeh

我已经建立了一个烧瓶应用程序,它正在Bokeh中绘制几个图形。

x值是表示天或周的日期时间对象,y值是要跟踪的值。每天都有一个y值,这是一个整数。

我添加了一个hovertool来显示图中绘图的y值,问题是hovertool在绘制的线上显示浮点值。我已经在线条和圆圈中绘制了视觉效果,但即使我删除了线条,这仍然是真的Hovertool text

将使用这些图表的人询问是否有可能只在数据发生变化的点上显示整数我试图将yvalues作为整数投射,但这并不是推动hovertool如何得到它的原因值。

另一方面,如果可能的话,我想改变的是增加hovertool中文本的字体大小。我查看了http://bokeh.pydata.org/en/latest/docs/user_guide/tools.html#hovertoolhttp://bokeh.pydata.org/en/latest/docs/reference/models/tools.html处的文档,但我无法设置。

这是我的hovertool的代码

 hover = HoverTool(tooltips=[
(title, "($y)")

后来....

   fig = figure(plot_width=500,plot_height=500,title=title,x_axis_type='datetime',tools=[hover])    

1 个答案:

答案 0 :(得分:3)

如果要更改悬停工具中值的格式,可以在指定每个悬停工具字段时指定格式。请参阅:http://bokeh.pydata.org/en/latest/docs/user_guide/tools.html#formatting-tooltip-fields

以下是不同格式的示例:

from bokeh.plotting import figure, output_file, show, ColumnDataSource
from bokeh.models import HoverTool

output_file("toolbar.html")

source = ColumnDataSource(data=dict(
    x=[1.8, 2, 3, 4, 5],
    y=[2.2, 5, 8.234, 2, 7.22],
    n_id=[1.8,2.8,2.2,2.4,2.5]))

hover = HoverTool(
    tooltips=[
        ( 'x','$x{0}'),
        ( 'y','@y{0.0}'),
        ('id','@n_id{0}')
    ],
)

p = figure(plot_width=400, plot_height=400, tools=[hover],
           title="Mouse over the dots")

p.circle('x', 'y', size=20, source=source)

show(p)

如果您想要更好地控制外观,则需要编写自定义工具提示:http://bokeh.pydata.org/en/latest/docs/user_guide/tools.html#custom-tooltip

您可以使用它并组合格式化程序,如下所示:

from bokeh.plotting import figure, output_file, show, ColumnDataSource
from bokeh.models import HoverTool

output_file("toolbar.html")

source = ColumnDataSource(data=dict(
    x=[1.8, 2, 3, 4, 5],
    y=[2.2, 5, 8.234, 2, 7.22],
    n_id=[1.8,2.8,2.2,2.4,2.5]))

hover = HoverTool(
    tooltips="""
    <div>
        <div>
            <span style="font-size: 17px; font-weight: bold;">x: @x{0.0}</span>
        </div>
        <div>
            <span style="font-size: 15px; color: #966;">y: @y{0.00}</span>
        </div>
        <div>
            <span style="font-size: 23px; color: #966;">id: @n_id{0}</span>
        </div>
    </div>
    """
)

p = figure(plot_width=400, plot_height=400, tools=[hover],
           title="Mouse over the dots")

p.circle('x', 'y', size=20, source=source)

show(p)