2016-07-11 9 views
4

Wie in dieser Frage:multi_line schweben in Bokeh

Bokeh multi_line and HoverTool

fand ich, dass hovertool nicht für multi_line Plots umgesetzt wird, die ein bisschen ein Rückschlag ist. Dies wird unter "Warnungen" hier erwähnt: http://bokeh.pydata.org/en/0.11.0/docs/reference/models/tools.html#bokeh.models.tools.HoverTool

Gibt es irgendwelche Arbeitsumstände dafür? Auch, wenn ich diese Funktion implementieren würde, was wäre ein guter Ausgangspunkt und gibt es etwas Besonderes zu beachten? Ist diese Funktion auch in der aktuellen Bokeh-Roadmap enthalten?

+0

Da es dies wahrscheinlich passiert sein Diese Woche wurde ich von jemandem auf Continuum angeschaut, um auf ein Kundenprojekt zu reagieren, damit Sie bald Glück haben. – bigreddot

+0

@bigreddot wissen Sie, ob das noch passiert? Linien in Bokeh hervorzuheben wäre ein wirklich cooles Feature. – jonalm

+0

ja, siehe unten. – bigreddot

Antwort

5

Ab Bokeh 0.12.4 (früher, eigentlich aber ich die genaue Release vergessen) das Hover-Tool unterstützt mutli_line:

from collections import defaultdict 

import numpy as np 
from scipy.stats import norm 

from bokeh.plotting import show, figure 
from bokeh.models import ColumnDataSource, HoverTool 
from bokeh.palettes import Viridis6 

RT_x = np.linspace(118, 123, num=50) 

mass_spec = defaultdict(list) 
for scale, mz in [(1.0, 83), (0.9, 55), (0.6, 98), (0.4, 43), (0.2, 39), (0.12, 29)]: 
    mass_spec["RT"].append(RT_x) 
    mass_spec["RT_intensity"].append(norm(loc=120.4).pdf(RT_x) * scale) 
    mass_spec['MZ_tip'].append(mz) 
    mass_spec['Intensity_tip'].append(scale) 
mass_spec['color'] = Viridis6 

source = ColumnDataSource(mass_spec) 

p = figure(plot_height=400) 
p.multi_line(xs='RT', ys='RT_intensity', legend="Intensity_tip", 
      line_width=5, line_color='color', line_alpha=0.6, 
      hover_line_color='color', hover_line_alpha=1.0, 
      source=source) 

p.add_tools(HoverTool(show_arrow=False, line_policy='next', tooltips=[ 
    ('MZ', '@MZ_tip'), 
    ('Rel Intensity', '@Intensity_tip') 
])) 

show(p) 

was dazu führt,

enter image description here

+0

Danke. Der Grund, warum ich verwirrt war, war, weil ich versucht habe, das 'hover_line_alpha' Schlüsselwort im 'MultiLine' Modell Glyph zu verwenden, das' AttributError: unerwartete Attribut 'Hover_line_alpha' zu MultiLine, ...' in 0.12.4 gibt. Wird 'bokeh.plotting.figure' gegenüber 'bokeh.models.Plot' bevorzugt (um ehrlich zu sein, verstehe ich den Unterschied nicht wirklich)? – jonalm

+0

Rechts, 'Hover_line_alpha' ist eine höhere Ebene Bequemlichkeit. Sowohl "MultiLine" als auch "Plot" sind Low-Level-Bausteine. Zum Beispiel ist "Plot" im Grunde nur ein Container für Dinge, die zeichnen können. Sie können Achsen und Gitter einfügen, aber * Sie * müssen es tun. 'figure' ist eine API höherer Ebene, die ein Grunddiagramm mit Achsen und Werkzeugen für Sie zusammenstellt. Weitere Informationen: http://bokeh.pydata.org/en/latest/docs/user_guide/concepts.html#interfaces – bigreddot