La información sobre herramientas de desplazamiento de Bokeh no muestra todos los datos – cuaderno Ipython

Estoy experimentando con Bokeh y mezclando piezas de código. Creé el siguiente gráfico a partir de un DataFrame de Pandas, que muestra el gráfico correctamente con todos los elementos de herramienta que quiero. Sin embargo, la información sobre herramientas muestra parcialmente los datos.

Aquí está el gráfico:

tabla de bokeh con información sobre herramientas

Aquí está mi código:

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) 

He probado con Firefox 39.0, Chrome 43.0.2357.130 (64 bits) y Safari versión 8.0.7. He borrado el caché y me sale el mismo error en todos los navegadores. También hice pip install bokeh –upgrade para asegurarme de que tengo la última versión en ejecución.

Intente utilizar ColumnDataSource .

La herramienta de desplazamiento debe tener acceso a la fuente de datos para que pueda mostrar información. @x , @y son los valores xy en la unidad de datos. (El prefijo @ es especial, solo puede ir seguido de un conjunto limitado de variables, @y2 no es una de ellas). Normalmente, usaría $ + column_name para mostrar el valor de mi interés, como $weight . Vea aquí para más información.

Además, me sorprende que el hover aparezca en absoluto. Como pensé, hoverTool no funciona con el glifo de línea, como se indica aquí

Intente lo siguiente: (No he probado, podría tener errores tipográficos).

 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") 

¿Estás usando Firefox? Este fue un problema reportado con algunas versiones anteriores de FF:

https://github.com/bokeh/bokeh/issues/1981

https://github.com/bokeh/bokeh/issues/2122

La actualización de FF resolvió el problema.