J'utilise matplotlib
avec NavigationToolbar2QT
. La barre d'outils affiche la position du curseur. Mais j'aimerais que le curseur s'accroche au point de données le plus proche (lorsqu'il est suffisamment proche) ou affiche simplement les coordonnées du point de données le plus proche. Cela peut-il être arrangé d'une manière ou d'une autre?
python
matplotlib
Pygmalion
la source
la source
Réponses:
Si vous travaillez avec de grands ensembles de points, je vous conseille d'utiliser
CKDtrees
:J'ai refactorisé la
kpie's
réponse ici un peu. Une foisckdtree
créé, vous pouvez identifier instantanément les points les plus proches et divers types d'informations à leur sujet:Affichage interactif de la position du curseur. Si vous souhaitez que les coordonnées du point le plus proche s'affichent dans la barre d'outils de navigation:
Utiliser des événements. Si vous souhaitez un autre type d'interactivité, vous pouvez utiliser des événements:
la source
points
l' échelle à chaque fois que le tracé est zoomé?ckdtree.data
des points réalistes avec échelle = 1. Vouspoints
pouvez être redimensionné et il n'y a aucun problème si vous devez accéder uniquement à leurs indices.matplotlib
? Ce que j'ai trouvé sur le Web était extrêmement compliqué.matplotlib
bibliothèque. Après tout, la bibliothèque a rappelé les positions des points quelque part - après tout, elle les dessine dans l'intrigue!set_aspect
: matplotlib.org/3.1.3/api/_as_gen/…Le code suivant imprime les coordonnées du point le plus proche de la souris lorsque vous cliquez.
la source
Vous pouvez sous
NavigationToolbar2QT
-classer et remplacer lemouse_move
gestionnaire. Les attributsxdata
etydata
contiennent la position actuelle de la souris en coordonnées de tracé. Vous pouvez accrocher cela au point de données le plus proche avant de transmettre l'événement aumouse_move
gestionnaire de classe de base .Exemple complet, avec mise en évidence du point le plus proche dans l'intrigue en bonus:
la source