Изменить формат отображения при наведении на Bokeh - PullRequest
0 голосов
/ 17 апреля 2019

У меня дата-время на x-axis, и я пытался построить его как дату-время, но, по-видимому, согласно это Боке может иметь только числовые оси. Если это не изменилось, пожалуйста, дайте мне знать. Но мне было интересно, может быть, есть хотя бы способ отображения даты и времени при наведении, а не метки времени (что-то вроде 153286000)?

p.select_one(HoverTool).tooltips = [('Datetime', '@x'),('Position', '@y')]

Я пытался добавить .to_datetime(), но это не сработало.

1 Ответ

1 голос
/ 17 апреля 2019

Вам нужно установить x_axis_type = "datetime" и использовать форматеры для даты и времени следующим образом:

p.select_one(HoverTool).formatters = {'Datetime': 'datetime'}

Смотрите полный пример ниже (Bokeh v1.1.0). См. Также Документация Bokeh по форматированию всплывающих подсказок.

import numpy as np
from bokeh.io import output_file, show
from bokeh.models import ColumnDataSource, HoverTool
from bokeh.plotting import figure
from bokeh.sampledata.stocks import AAPL

def datetime(x):
    return np.array(x, dtype = np.datetime64)

source = ColumnDataSource(data = {'date'      : datetime(AAPL['date'][::10]),
                                  'adj close' : AAPL['adj_close'][::10],
                                  'volume'    : AAPL['volume'][::10]})

p = figure(plot_height = 250, x_axis_type = "datetime", sizing_mode = "scale_width")

p.background_fill_color = "#f5f5f5"
p.grid.grid_line_color = "white"
p.xaxis.axis_label = 'Date'
p.yaxis.axis_label = 'Price'
p.axis.axis_line_color = None

p.line(x = 'date', y = 'adj close', line_width = 2, color = '#ebbd5b', source = source)

hover = HoverTool(mode = 'vline')
hover.tooltips = [('date', '@date{%F}'), ('close', '$@{adj close}{%0.2f}'), ('volume', '@volume{0.00 a}')]
hover.formatters = {'date': 'datetime', 'adj close' : 'printf'}
p.add_tools(hover)

show(p)

Результат:

enter image description here

...