HoverTool für mehrere Datenreihen im bokeh scatter-plot
Habe ich das folgende kleine Beispiel script machen Verwendung von numpy und bokeh:
import numpy as np
import bokeh.plotting as bp
from bokeh.objects import HoverTool
bp.output_file('test.html')
fig = bp.figure(tools="reset,hover")
x = np.linspace(0,2*np.pi)
y1 = np.sin(x)
y2 = np.cos(x)
s1 = fig.scatter(x=x,y=y1,color='#0000ff',size=10,legend='sine')
s1.select(dict(type=HoverTool)).tooltips = {"x":"$x", "y":"$y"}
s2 = fig.scatter(x=x,y=y2,color='#ff0000',size=10,legend='cosine')
s2.select(dict(type=HoverTool)).tooltips = {"x":"$x", "y":"$y"}
bp.show()
Das problem ist, dass die hover-tool funktioniert nur für die Cosinus-Kurve, aber nicht für den Sinus.
Weiß ich, dass eine option wäre die Handlung der beiden Serien zusammen und ändern Sie die Farbe der Cosinus data Punkte:
import numpy as np
import bokeh.plotting as bp
from bokeh.objects import HoverTool
bp.output_file('test.html')
fig = bp.figure(tools="reset,hover")
x = np.linspace(0,2*np.pi)
y1 = np.sin(x)
y2 = np.cos(x)
x = np.array([x,x]).flatten()
y = np.array([y1,y2]).flatten()
blue = np.array('#0000ff').flatten()
red = np.array('#ff0000').flatten()
colors = np.array([blue.repeat(len(y1)),red.repeat(len(y1))]).flatten()
s1 = fig.scatter(x=x,y=y,color=colors,size=10,legend='sine & cosine')
s1.select(dict(type=HoverTool)).tooltips = {"x":"$x", "y":"$y"}
bp.show()
Aber dann verliere ich die Legende Eintrag für die zweite Farbe.
Wie kann ich verwalten zu können, bewegen Sie den Mauszeiger über die beiden Daten-sets und der entsprechende tooltip?
Dank!
Max
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist tatsächlich ein bug gelöst master. Ich war fest in das PR - https://github.com/bokeh/bokeh/pull/1511
Sie können installieren Sie unsere devel build enthält das Update nach dieser Anleitung: http://bokeh.pydata.org/docs/installation.html#developer-builds
Außerdem benötigen Sie zum ändern Ihrer ersten code zu verwenden Modelle statt Objekte in der Dritten Zeile, wie folgt:
Hoffe, es hilft!
Cheers.
Damian
AKTUALISIERT mit den Kommentaren unten
fig.select(HoverTool)
Wenn Sie möchten, um mehrere hover-tools, die Sie brauchen, um hinzuzufügen mehrere hover-tools, die jeweils konfiguriert für einen anderen renderer. Sie können Sie auf diese Weise: