我喜欢用HoverTool设置基本的悬停反馈是多么的简单,但是我要处理显示的几个方面。我有时间序列数据,测量值以美元表示。这些数据以pandas.Series开始生命。清晰的绘图很容易(以下假设为jupyter笔记本):

p = figure(title='Example currency', x_axis_type='datetime',
           plot_height=200, plot_width=600, tools='')
p.line(my_data.index, my_data)
p.yaxis[0].formatter = NumeralTickFormatter(format='$0,0')
show(p)

这向我展示了时间序列,在x轴和y轴值上有日期格式,这些值看起来像“150000美元”、“200000美元”、“250000美元”等:
控制HoverTool$x的格式。
访问光标下数据集的名称。
只需添加一个$y就允许我查看值,但使用的是无用的单位:
p.add_tools(HoverTool())

具有这些默认值的相应工具提示值显示“1.468e+5”,而不是“146800美元”(甚至是“146800”,基本的HoverTool值);类似地,日期值显示为“1459728000000”,而不是(例如)“2016-04-04”。通过将Series设置为pandas.Series并添加具有所需格式的字符串列,我可以手动解决此显示问题:
# Make sure Series and its index have `name`, before converting to DataFrame
my_data.name = 'revenue'
my_data.index.name = 'day'
df = my_data.reset_index()
# Add str columns for tooltip display
df['daystr'] = df['day'].dt.strftime('%m %b %Y')
df['revstr'] = df['revenue'].apply(lambda x: '${:,d}'.format(int(x)))
cds = ColumnDataSource(df)

p = figure(title='Example currency', x_axis_type='datetime',
           plot_height=200, plot_width=600, tools='')
p.line('day', 'revenue', source=cds)
p.yaxis[0].formatter = NumeralTickFormatter(format='$0,0')
p.add_tools(HoverTool(tooltips=[('Amount', '@revstr'), ('Day', '@daystr')]))
show(p)

但是,是否有方法来处理ColumnDataSource配置中的格式?这似乎比上面要求的所有数据集转换都要理想得多。我查看了文档并(很快)扫描了源代码,没有看到任何明显的东西可以帮助我构建如上所述的“输出”列。
与此相关,当我在一个图中有多行时,是否有任何方法可以访问HoverTool中每行的name(或legend值)?在工具提示中包含一些内容以区分哪些数据集值来自,而不需要依赖(例如)线颜色和工具提示显示,这将非常有帮助。现在,我在HoverTool.tooltips中添加了一个额外的列,这只是我想要显示的字符串值;显然,这只适用于包含单个度量列的数据集。当多行共享一个底层ColumnDataSource时,访问提供给ColumnDataSource的列名就足够了。

最佳答案

嘿,我知道已经晚了两年了,但这是给其他遇到这个的人的

 p.add_tools(HoverTool(
tooltips=[
            ('Date',    '@Date{%F}'),
            ('Value',   '@Value{int}')],
formatters={
'Date':'datetime',
'Value':'numeral'},mode='vline'
))

10-07 12:34