Maison >développement back-end >Tutoriel Python >Comment ajouter des annotations de survol aux nuages de points Matplotlib ?
Comment créer des annotations en survol dans un tracé
Lors de l'analyse de nuages de points avec de nombreux points de données, l'identification de points d'intérêt spécifiques peut être difficile. Une solution pratique consiste à implémenter des annotations de survol qui affichent des informations supplémentaires lors du mouvement du curseur.
La bibliothèque matplotlib fournit une fonctionnalité polyvalente pour ajouter des annotations aux tracés. Pour créer des annotations de survol, nous pouvons utiliser les fonctions annotate et update_annot. La fonction annotate positionne une annotation à une coordonnée spécifiée, tandis que update_annot modifie son texte et son apparence en fonction de l'index du point de données survolé.
Pour obtenir des annotations survolées, suivez ces étapes :
En implémentant Avec cette approche, vous pouvez facilement ajouter des annotations de survol à vos nuages de points, fournissant ainsi des informations précieuses sur des points de données spécifiques sans encombrer le tracé.
Exemple :
L'extrait de code fourni démontre l'implémentation d'annotations en survol sur un nuage de points :
import matplotlib.pyplot as plt import numpy as np; np.random.seed(1) x = np.random.rand(15) y = np.random.rand(15) names = np.array(list("ABCDEFGHIJKLMNO")) c = np.random.randint(1,5,size=15) norm = plt.Normalize(1,4) cmap = plt.cm.RdYlGn fig,ax = plt.subplots() sc = plt.scatter(x,y,c=c, s=100, cmap=cmap, norm=norm) annot = ax.annotate("", xy=(0,0), xytext=(20,20),textcoords="offset points", bbox=dict(boxstyle="round", fc="w"), arrowprops=dict(arrowstyle="->")) annot.set_visible(False) def update_annot(ind): pos = sc.get_offsets()[ind["ind"][0]] annot.xy = pos text = "{}, {}".format(" ".join(list(map(str,ind["ind"]))), " ".join([names[n] for n in ind["ind"]])) annot.set_text(text) annot.get_bbox_patch().set_facecolor(cmap(norm(c[ind["ind"][0]]))) annot.get_bbox_patch().set_alpha(0.4) def hover(event): vis = annot.get_visible() if event.inaxes == ax: cont, ind = sc.contains(event) if cont: update_annot(ind) annot.set_visible(True) fig.canvas.draw_idle() else: if vis: annot.set_visible(False) fig.canvas.draw_idle() fig.canvas.mpl_connect("motion_notify_event", hover) plt.show()
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!