Bokeh: rappel de mail personnalisé pour le déplacement ou le clic de la souris

Je souhaite mettre à jour les données de ma parcelle en fonction de la position actuelle de la souris.

Ce que je vis est quelque chose comme le diagramme de la fonction de puissance interactive , mais au lieu de prendre l'exposant à partir d'un curseur, prenez l'exposant pour être la valeur x actuelle du curseur de la souris (dans l'espace des coordonnées du tracé, pas les coordonnées d'affichage).

S'il n'est pas possible d'obtenir un rappel de onMouseMove, onClick serait également correct. Cependant, je ne veux pas avoir à cliquer sur un graphique spécifique (alors je pourrais utiliser TapTool), mais il suffit de taper sur l'intrigue.

Vous pouvez utiliser HoverTool et CustomJS comme dans l'exemple de code ci-dessous. Cet exemple tracte une ligne de la position du curseur au point (1,1). Lors de l'ouverture d'une console JavaScript, vous pouvez voir les valeurs de x et y lorsque vous déplacez la souris.

from bokeh.plotting import figure,show, ColumnDataSource from bokeh.models import CustomJS, HoverTool import numpy as np s = ColumnDataSource(data = dict(x=[0,1],y=[0,1])) #points of the line callback = CustomJS(args=dict(s=s), code=""" var geometry = cb_data['geometry']; var x_data = geometry.x; // current mouse x position in plot coordinates var y_data = geometry.y; // current mouse y position in plot coordinates console.log("(x,y)=" + x_data+","+y_data); //monitors values in Javascript console var x = s.get('data')['x']; var y = s.get('data')['y']; x[0] = x_data; y[0] = y_data; s.trigger('change'); """) hover_tool = HoverTool(callback=callback) p = figure(x_range=(0,1), y_range=(0,1), tools= [hover_tool, "crosshair,box_zoom,wheel_zoom,pan,reset"]) p.line(x='x',y='y',source=s) show(p) 

Entrez la description de l'image ici

Sortie de la console Javascript:

 ... VM615:7 (x,y)=0.37494791666666666,0.37447916666666664 VM615:7 (x,y)=0.37494791666666666,0.37114583333333334 VM615:7 (x,y)=0.37161458333333336,0.37114583333333334 VM615:7 (x,y)=0.38828125,0.37114583333333334 VM615:7 (x,y)=0.43161458333333336,0.3878125 VM615:7 (x,y)=0.7216145833333333,0.4878125 ...