HoverTool pour plusieurs séries de données dans le flou d'arrière-plan du diagramme de dispersion
J'ai le petit exemple de script de décisions utilisation de numpy et 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()
Le problème est que le hover outil ne fonctionne que pour le cosinus de la courbe, mais pas pour le sinus.
Je sais qu'une option serait de tracer les deux séries de bois et de changer la couleur du cosinus de points de données:
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()
Mais puis-je perdre de l'entrée de légende pour la deuxième couleur.
Comment puis-je gérer pour être en mesure de planer sur les deux ensembles de données et de voir l'info-bulle correspondante?
Merci!
Max
Vous devez vous connecter pour publier un commentaire.
C'est en fait un bug résolu en maître. J'ai été corrigés dans cette PR https://github.com/bokeh/bokeh/pull/1511
Aussi, vous aurez besoin de modifier votre premier code à utiliser modèles au lieu de objets dans la troisième ligne, comme suit:
Espère que cela aide!
Acclamations.
Damian
Mis à JOUR avec les commentaires ci-dessous
fig.select(HoverTool)
Si vous voulez avoir de multiples passez outils, vous devez ajouter plusieurs hover outils, chacun configuré pour un autre moteur de rendu. Vous pouvez ajouter cette façon: