散景悬停工具提示未显示所有数据 - Ipython 笔记本
Bokeh hover tooltip not displaying all data - Ipython notebook
我正在尝试使用 Bokeh 和混合代码片段。我从 Pandas DataFrame 创建了下图,它使用我想要的所有工具元素正确显示了该图。但是,工具提示只显示了部分数据。
这是图表:
这是我的代码:
from bokeh.plotting import figure, show
from bokeh.io import output_notebook
from bokeh.models import HoverTool
from collections import OrderedDict
x = yearly_DF.index
y0 = yearly_DF.weight.values
y1 = yearly_DF.muscle_weight.values
y2 = yearly_DF.bodyfat_p.values
#output_notebook()
p = figure(plot_width=1000, plot_height=600,
tools="pan,box_zoom,reset,resize,save,crosshair,hover",
title="Annual Weight Change",
x_axis_label='Year',
y_axis_label='Weight',
toolbar_location="left"
)
hover = p.select(dict(type=HoverTool))
hover.tooltips = OrderedDict([('Year', '@x'),('Total Weight', '@y0'), ('Muscle Mass', '$y1'), ('BodyFat','$y2')])
output_notebook()
p.line(x, y0, legend="Weight")
p.line(x, y1, legend="Muscle Mass", line_color="red")
show(p)
我已经使用 Firefox 39.0、Chrome 43.0.2357.130(64 位)和 Safari 版本 8.0.7 进行了测试。我已经清除了缓存,但在所有浏览器中都出现了同样的错误。我也做了 pip install bokeh --upgrade 以确保我有最新版本 运行.
您使用的是 Firefox 吗?这是一些旧版本 FF 的报告问题:
https://github.com/bokeh/bokeh/issues/1981
https://github.com/bokeh/bokeh/issues/2122
升级 FF 解决了这个问题。
尝试使用 ColumnDataSource
。
悬停工具需要访问数据源才能显示信息。
@x
、@y
是数据单元中的x-y值。 (@
前缀比较特殊,后面只能跟有限的一组变量,@y2
不是其中之一),一般我会用$
+column_name来显示我感兴趣的值,比如$weight
。有关详细信息,请参阅 here。
此外,我很惊讶悬停会出现。我认为 hoverTool 不适用于线条字形,如前所述 here
尝试以下方法:(我没有测试过,可能有拼写错误)。
df = yearly_DF.reset_index() # move index to column.
source = ColumnDataSource(ColumnDataSource.from_df(df)
hover.tooltips = OrderedDict([('x', '@x'),('y', '@y'), ('year', '$index'), ('weight','$weight'), ('muscle_weight','$muscle_weight'), ('body_fat','$bodyfat_p')])
p.line(x='index', y='weight', source=source, legend="Weight")
p.line(x='index', y='muscle_weight', source=source, legend="Muscle Mass", line_color="red")
我正在尝试使用 Bokeh 和混合代码片段。我从 Pandas DataFrame 创建了下图,它使用我想要的所有工具元素正确显示了该图。但是,工具提示只显示了部分数据。
这是图表:
这是我的代码:
from bokeh.plotting import figure, show
from bokeh.io import output_notebook
from bokeh.models import HoverTool
from collections import OrderedDict
x = yearly_DF.index
y0 = yearly_DF.weight.values
y1 = yearly_DF.muscle_weight.values
y2 = yearly_DF.bodyfat_p.values
#output_notebook()
p = figure(plot_width=1000, plot_height=600,
tools="pan,box_zoom,reset,resize,save,crosshair,hover",
title="Annual Weight Change",
x_axis_label='Year',
y_axis_label='Weight',
toolbar_location="left"
)
hover = p.select(dict(type=HoverTool))
hover.tooltips = OrderedDict([('Year', '@x'),('Total Weight', '@y0'), ('Muscle Mass', '$y1'), ('BodyFat','$y2')])
output_notebook()
p.line(x, y0, legend="Weight")
p.line(x, y1, legend="Muscle Mass", line_color="red")
show(p)
我已经使用 Firefox 39.0、Chrome 43.0.2357.130(64 位)和 Safari 版本 8.0.7 进行了测试。我已经清除了缓存,但在所有浏览器中都出现了同样的错误。我也做了 pip install bokeh --upgrade 以确保我有最新版本 运行.
您使用的是 Firefox 吗?这是一些旧版本 FF 的报告问题:
https://github.com/bokeh/bokeh/issues/1981
https://github.com/bokeh/bokeh/issues/2122
升级 FF 解决了这个问题。
尝试使用 ColumnDataSource
。
悬停工具需要访问数据源才能显示信息。
@x
、@y
是数据单元中的x-y值。 (@
前缀比较特殊,后面只能跟有限的一组变量,@y2
不是其中之一),一般我会用$
+column_name来显示我感兴趣的值,比如$weight
。有关详细信息,请参阅 here。
此外,我很惊讶悬停会出现。我认为 hoverTool 不适用于线条字形,如前所述 here
尝试以下方法:(我没有测试过,可能有拼写错误)。
df = yearly_DF.reset_index() # move index to column.
source = ColumnDataSource(ColumnDataSource.from_df(df)
hover.tooltips = OrderedDict([('x', '@x'),('y', '@y'), ('year', '$index'), ('weight','$weight'), ('muscle_weight','$muscle_weight'), ('body_fat','$bodyfat_p')])
p.line(x='index', y='weight', source=source, legend="Weight")
p.line(x='index', y='muscle_weight', source=source, legend="Muscle Mass", line_color="red")