bokeh: всплывающая подсказка отображает время в нано секундах - как конвертировать? - PullRequest
1 голос
/ 24 января 2020

У меня возникли проблемы с форматированием отображаемых значений инструмента пылесоса. Вот соответствующий код для моего составного графика vbar:

p.vbar_stack(sports, x='dates', width=70000000, color=colors, source=plot_data,
             legend=[value(x) for x in sports])
p.add_tools(HoverTool(
    tooltips=[
        ("Duration", "@$name min"),  # values of 'name' are in nanoseconds
        ("Sport", "$name"),
    ]))

, который приводит к такому выводу: bokeh_plot

Но вместо того, чтобы Duration отображалось в наносекундах, я бы нравится отображать его в формате ЧЧ: ММ или, по крайней мере, в формате с плавающей запятой, например в формате минут или часов.

Я также попытался добавить форматер, как описано в в этом посте , но безуспешно.

Данные из переменной plot_data выглядят следующим образом:

plot_data = {'Hiking': array([0, 0, 0, 13090000000000,
                              13417000000000, 0, 14680000000000, 0,
                              0, 0, 0, 0,
                              0, 0, 0, 0,
                              0, 0, 0, 0,
                              0, 0, 0, 0,
                              0, 0, 0, 0,
                              0, 0, 0],
                             dtype='timedelta64[ns]'),
             'dates': [datetime.date(2019, 12, 25), datetime.date(2019, 12, 26), datetime.date(2019, 12, 27),
                       datetime.date(2019, 12, 28), datetime.date(2019, 12, 29), datetime.date(2019, 12, 30),
                       datetime.date(2019, 12, 31), datetime.date(2020, 1, 1), datetime.date(2020, 1, 2),
                       datetime.date(2020, 1, 3), datetime.date(2020, 1, 4), datetime.date(2020, 1, 5),
                       datetime.date(2020, 1, 6), datetime.date(2020, 1, 7), datetime.date(2020, 1, 8),
                       datetime.date(2020, 1, 9), datetime.date(2020, 1, 10), datetime.date(2020, 1, 11),
                       datetime.date(2020, 1, 12), datetime.date(2020, 1, 13), datetime.date(2020, 1, 14),
                       datetime.date(2020, 1, 15), datetime.date(2020, 1, 16), datetime.date(2020, 1, 17),
                       datetime.date(2020, 1, 18), datetime.date(2020, 1, 19), datetime.date(2020, 1, 20),
                       datetime.date(2020, 1, 21), datetime.date(2020, 1, 22), datetime.date(2020, 1, 23),
                       datetime.date(2020, 1, 24)]}

Так что здесь я могу видеть значения в нано секундах. Боке все еще знает, сколько часов прошло с тех пор, как высота vbar была выровнена по оси Y, которая автоматически указывается в часах.

Так что, я думаю, должно быть возможным каким-то образом преобразовать наносекунды в часы или аналогичный.

...