Мой код для боке HoverTool следующий:
p = figure(
plot_height=250,
x_axis_type='datetime',
)
p.vbar(x=data_df['date'].dt.to_pydatetime(), top=data_df['data'].values, width=datetime.timedelta(1))
hover_tool = HoverTool(
tooltips=[('Count', '@top'), ('Date', '@x')], mode='vline', formatters = {'$x': 'datetime'}
)
p.add_tools(hover_tool)
Я по-прежнему получаю числовой формат даты, как видно на изображении. Я пытался formatters = {'@x': 'datetime'}
безуспешно.
Ваше решение работает, если вы используете $x
вместо @x
и добавляете один из перечисленных форматов, поддерживаемых DatetimeTickFormatter
, к ('Date', '$x')
, например ('Date', '$x{%F}')
. Есть много вариантов, и вы можете выбрать тот, который вы предпочитаете больше всего.
Минимальный пример
import pandas as pd
from bokeh.plotting import show, figure, output_notebook
from bokeh.models import HoverTool, ColumnDataSource
output_notebook()
data_df = pd.DataFrame({'date':pd.date_range('2022-05-13', freq='D', periods=10), 'top':list(range(10))})
p = figure(
plot_height=250,
x_axis_type='datetime',
)
p.vbar(x=data_df['date'], top=data_df['top'], width=pd.Timedelta('12H'))
hover_tool = HoverTool(
tooltips=[('Count', '@top'), ('Date', '$x{%F}')], mode='vline', formatters = {"$x": "datetime"}
)
p.add_tools(hover_tool)
show(p)
Комментарий:
Я не знаю, почему нет рабочего дефолта, но, может быть, из-за того, что вариантов так много, что любой дефолт был бы чем-то неправильным.
Спасибо решает спасибо!