如何在散景悬停格式化程序上设置自定义日期时间模式?

Posted

技术标签:

【中文标题】如何在散景悬停格式化程序上设置自定义日期时间模式?【英文标题】:How can I set custom datetime pattern on Bokeh hover formatter? 【发布时间】:2019-01-27 09:18:56 【问题描述】:

我正在尝试使用带有 Bokeh 的线图绘制一些与时间相关的值。当我尝试添加一个悬停来显示绘图某个点的具体值时,我的问题就出现了。

我想显示 value, time 数据(它工作正常),但我认为 yyyy-mm-dd 不适合我的目的,所以我想重新定义该模式以添加小时和分钟。

我的代码是这样的(你可以作为笔记本下载here):

from datetime import datetime, timedelta

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

import pandas as pd
import numpy as np


today = datetime.today()

date_range = pd.date_range(today, today + timedelta(days=1),
                           freq=timedelta(minutes=15))
values = np.random.randint(-10, 10, size=len(date_range)).cumsum()
data = pd.DataFrame('date': date_range, 'value': values)


hover = HoverTool(tooltips=[('value',   '@value'), ('date', '@date%F')],
                  formatters='date': 'datetime')

plt = figure(x_axis_type='datetime', tools=[hover])

plt.line(x='date', y='value', source=data)

show(plt)

输出是这样的:

所以我的问题如下:

谁能解释我如何修改悬停时的日期时间格式模式?

【问题讨论】:

【参考方案1】:

您可以通过将%H:%M 添加到@date 来以小时和分钟为单位添加时间,如下所示:

hover = HoverTool(tooltips=[('value',   '@value'), ('date', '@date%F %H:%M')],
                  formatters='date': 'datetime')

DatetimeTickFormatter 文档中描述了这些比例。

【讨论】:

【参考方案2】:

供供应:bokeh version 2.4.1

1):只需在formatters中输入“@”即可:
hover = HoverTool(tooltips=[('value',   '@value'), ('date', '@date%F')],
                  formatters='@date': 'datetime')

------------行-------

2): 您可以为工具提示提供一个自定义 html 模板: link:boke org guid
hover = HoverTool(
    tooltips="""
            <div>
                <h3>@date%F</h3>
                <div>
                    <strong>value: </strong>
                    <span style="font-size: 30px; font-weight: bold; color: #696;">@value</span>
                </div>
            </div>
            """,
    formatters='@date': 'datetime',
    mode='vline'
)

【讨论】:

以上是关于如何在散景悬停格式化程序上设置自定义日期时间模式?的主要内容,如果未能解决你的问题,请参考以下文章

悬停工具在散景中不起作用[重复]

散景自定义保存工具

如何在散景中绘制纬度和经度

在命令行中输入啥以在散景服务应用程序中运行 spark?我是不是只需用 && 分隔两个命令行条目?

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

散景地图情节。纬度/经度到 x 和 y