2017-09-04 5 views
0

Ich habe 3 Plots in der gleichen Grafik (Bokeh 0.12.7)Bokeh: Einzelne Tooltip für mehrere Plots

ich einen einzelnen Tooltip mit der Zusammenfassung aller Daten für die 3 Diagramme zeigen wollen, wie folgt aus:

single tooltip with summary

aber ich erhalten 2/3 überlappt (und identisch) tooltips, wenn der Mauszeiger auf mehrere Plots zu nah, wie in diesem Fall:

enter image description here

Es ist möglich, den Tooltip auf einen einzelnen Plot zu beschränken, aber das bedeutet nichts passiert, wenn der Mauszeiger die anderen zwei berührt: Im folgenden Code verwende ich den Parameter names in HoverTool, um den Tooltip nur auf den ersten Plot anzuwenden .

Gibt es eine Möglichkeit, ein einzelnes Hovertool zu haben, das auf alle Plots reagiert?

COMMON_PARAM = dict(x="date_time", source=self.data_source, line_alpha=GRAPH_LINE_ALPHA, line_width=GRAPH_LINE_WIDTH) 

line1 = self.figure.line(y=f1, 
         line_color=GRAPH_LINE_1_COLOR,             
         name="line_with_hovertool", 
         **COMMON_PARAM) 

line2 = self.figure.line(y=f2, 
         line_color=GRAPH_LINE_2_COLOR, 
         **COMMON_PARAM) 

line3 = self.figure.line(y=f3), 
         line_color=GRAPH_LINE_3_COLOR, 
         **COMMON_PARAM) 

hover = HoverTool(
    names=["line_with_hovertool"], # applies only to line1 
    tooltips= 
    """ 
    .... 
    """) 

self.figure.add_tools(hover) 

Antwort

0

Eine mögliche Umgehung besteht darin, den Hover-Modus in "vline" zu ändern. Dies bedeutet, dass der Mauszeiger eingeblendet wird, wenn der Benutzer seine Maus im Diagrammfenster von links nach rechts bewegt. Dann können Sie den Hover-Tooltip auf eine Glyphe beschränken, wie Sie es bereits getan haben.

Offensichtlich, wenn das nicht wünschenswert ist, bin ich nicht sicher, ob es einen besseren Weg derzeit gibt, so dass es nur kurzfristig arbeiten muss/bis das angesprochen wird.

Vline kann wie bei Bokeh-Dokumenten unter dem Attribut "mode" eingestellt werden, wenn Sie das Hovertool zuerst instanziieren. http://bokeh.pydata.org/en/latest/docs/reference/models/tools.html#bokeh.models.tools.HoverTool.mode

+0

Vielen Dank, @Anthonydouc. Ich habe es schon ausprobiert aber sah, dass selbst bei ** vline ** alle 3 Tooltips zusammen erscheinen. Ich kann, wie du sagst, ** Namen ** verwenden, um den Tooltip mit einer einzelnen Zeile zu verknüpfen, aber wenn er verschwindet (ich kann eine Zeile ausblenden und die anderen sichtbar lassen), ist der Tooltip verschwunden. Aber Sie gaben mir eine Idee: Ich werde eine zusätzliche "fast unsichtbare" Handlung mit konstantem y in der Mitte des Graphen hinzufügen (mit der gleichen Farbe des Hintergrunds und ohne Legende), und den Tooltip nur mit diesem verknüpfen. Ich werde auch das Problem der Tooltip so verrückt und ruckartig beim Bewegen der Maus lösen. –

+0

Ja es ist leider keine saubere Lösung. Ich denke, die Alternative besteht darin, Hover-Tooltips zu verstecken und anzuzeigen, abhängig von der Sichtbarkeit der Zeilen, wenn das ein Problem verursacht, aber ich hatte viele Probleme damit. http://www.aither.com.au/water-markets/aither-southern-mdb-entitlement-index1/ Beispiel ist hier (mit Bokeh) – Anthonydouc