Python Bokeh don'中的数据工具提示;t显示数据,显示'';相反

Python Bokeh don'中的数据工具提示;t显示数据,显示'';相反,python,hover,tooltip,bokeh,stacked-chart,Python,Hover,Tooltip,Bokeh,Stacked Chart,维护人员注意:这个问题涉及几年前删除的过时的bokeh.chartsAPI。有关现代Bokeh中带条形图的悬停工具的信息,请参见本节: 我正在尝试使用Bokeh创建一个堆叠条形图。我想使用悬停功能,在条形图的每个部分显示相关数据,但不使用Bokeh显示的数据 我在一个名为“示例工作表”的excel文件中,在一个名为“销售”的工作表中获得了数据。该表如下所示: Year Category Sales 2016 A 1 2016 B

维护人员注意:这个问题涉及几年前删除的过时的
bokeh.charts
API。有关现代Bokeh中带条形图的悬停工具的信息,请参见本节:


我正在尝试使用Bokeh创建一个堆叠条形图。我想使用悬停功能,在条形图的每个部分显示相关数据,但不使用Bokeh显示的数据

我在一个名为“示例工作表”的excel文件中,在一个名为“销售”的工作表中获得了数据。该表如下所示:

Year    Category    Sales
2016    A           1
2016    B           1
2016    C           1.5
2017    A           2
2017    B           3
2017    C           1
2018    A           2.5
2018    B           3
2018    C           2
我尝试运行以下代码:

import numpy as np
import scipy as sp
from bokeh.charts import Bar, output_file, show
from bokeh.models import HoverTool
import pandas as pd

x = pd.read_excel('Example worksheet.xlsx', 'Sales')
bar = Bar(x, label = 'Year', values = 'Sales', agg = 'sum', stack = 'Category', tools='hover')
hover = bar.select(dict(type=HoverTool))
source = x
hover.tooltips = [('Category', '@Category'),('Sales', '@Sales')]
output_file("Expected Sales.html")
show(bar)
在运行之后,我在Python控制台中得到以下消息(我认为这与主题无关,但我还是把它放在这里):

然后在浏览器上,我得到以下图表:

如您所见,数据被问号替换。我在运行Ubuntu 15.04(64位)的FF 41.0.1和Chromium 45.0.2454.101上都得到了这个结果

我读了博克教程

但它并不是指条形图。我在Stackoverflow上也发现了这一点:


这个问题可能有关联,但坦率地说,我不太明白答案。

我能够重现您的问题并找到解决方案。首先,重新创建您的DF:

data = [k.split() for k in 
'''2016    A           1
2016    B           1
2016    C           1.5
2017    A           2
2017    B           3
2017    C           1
2018    A           2.5
2018    B           3
2018    C           2'''.split('\n')]

x = pd.DataFrame(data, columns = ['year','category','sales'])
x['year']  = x['year'].astype(object)
x['sales'] = x['sales'].astype(float)
现在,解决方案是:

from bokeh.charts import Bar, output_file, show
from bokeh.models import HoverTool
from bokeh.models import ColumnDataSource    

source = ColumnDataSource(x)

bar = Bar(x, label='year', values='sales', agg='sum', stack='category', title="Expected Sales by year", tools = 'hover')
hover = bar.select(dict(type=HoverTool))
hover.tooltips = [('Year', '@x'),('Sales', '@y')]
show(bar)
这将生成以下图表:

增加:

类别ColumnDataSource(*参数,**kw)


可能是解决方案中最重要的部分(您可以阅读更多相关信息)。

我也遇到了同样的问题。我觉得很有用。销售工具提示将使用通用的高度,例如:
hover.tooltips=[('Sales','@height')]


同样地,将
@height
替换为
@y
将得到每年的总销售额。我还没有弄清楚如何使用工具提示访问堆叠的类别,或者如何使用链接中提到的ColumnDataSource。

您找到问题的解决方案了吗?是的,您的答案成功了。谢谢谢谢@Uri!请接受我的答案,并投票关闭它,并获得您和我的积分。顺致敬意,@height、$x、$y、@x、@y具体指的是什么。似乎我能弹出的唯一数据就是值和标签。我不明白
source=ColumnDataSource(x)
在做什么,因为
source
根本没有被使用。你能详细说明一下吗?我也有一个类似的问题,但是当看到这个解决方案时,悬停工具实际上显示了所有这些问题的错误值。B+2018不是4,而是3。波基为什么这样做?早些时候发布了此消息:
from bokeh.charts import Bar, output_file, show
from bokeh.models import HoverTool
from bokeh.models import ColumnDataSource    

source = ColumnDataSource(x)

bar = Bar(x, label='year', values='sales', agg='sum', stack='category', title="Expected Sales by year", tools = 'hover')
hover = bar.select(dict(type=HoverTool))
hover.tooltips = [('Year', '@x'),('Sales', '@y')]
show(bar)